Transfer Object Pattern là gì?
Transfer Object/ Data Transfer Object Pattern là một dạng Architectural design Pattern, được thực hiện khi bọn họ muốn truyền dữ liệu qua lại giữa các tầng vào ứng dụng, thân Client – Server. Data Transfer Object (DTO) còn gọi là Value Object (VO).
Transfer Object dễ dàng và đơn giản là một POJO (Plain Old Java Object), chỉ chứa các getter/ setter method và hoàn toàn có thể có implement serialize nhằm truyền sở hữu dữ liệu thông qua network.
DTO hoàn toàn không chứa behavior/ logic, chỉ được áp dụng để truyền dữ liệu và bản đồ dữ liệu từ các Domain model trước khi truyền cho tới Client. Trong các ứng dụng đối kháng giản, các Domain model thường rất có thể được áp dụng lại trực tiếp bên dưới dạng DTO cùng được truyền trực tiếp đến lớp hiển thị, vì thế chỉ tất cả một Data model thống nhất. Đối với những ứng dụng tinh vi hơn, chúng ta không muốn hiển thị cục bộ Domain model cho Client, do đó, vấn đề ánh xạ từ những Domain mã sản phẩm sang DTO là đề nghị thiết.
Cài để Transfer Object Pattern như vậy nào?

UserModel.java
package com.embergarde.com.patterns.other.dto;import lombok.Data;/** * Domain mã sản phẩm / Entity */
Bạn đang xem: Dto là gì
Datapublic class UserModel private Integer id;private String userName;private String fullName;private String password;private String email;private String bankAccount;Dao.javapackage com.embergarde.com.patterns.other.dto;import java.util.List;import java.util.Optional;/** * Data Access Object */public interface Dao List getAll();Optional get(Integer id);void save(T t);void update(T t);void delete(T t);UserDao.java
package com.embergarde.com.patterns.other.dto;import java.util.ArrayList;import java.util.List;import java.util.Optional;public class UserDao implements Dao // Temporary databaseprivate danh mục users = new ArrayList();public UserDao() UserModel user = new UserModel();user.setId(1);user.setUserName("embergarde.com");user.setEmail("embergarde.comvn
gmail.com");user.setFullName("GP Coder");user.setPassword("1234567");user.setBankAccount("9999-9999-9999");users.add(user);
Overridepublic danh mục getAll() return users;
Overridepublic Optional get(Integer id) return users.stream().filter(u -> u.getId() == id).findFirst();
Xem thêm: 'In The Fast Paced Là Gì
Overridepublic void save(UserModel user) users.add(user);Overridepublic void update(UserModel user) int index = -1;for (UserModel u : users) index++;if (user.getId().equals(u.getId())) users.set(index, user);break;
Overridepublic void delete(UserModel user) get(user.getId()).ifPresent(existUser -> users.remove(existUser));UserDTO.java
package com.embergarde.com.patterns.other.dto;import lombok.Data;/** * Data Transfer Object */
Datapublic class UserDTO private Integer id;private String userName;private String fullName;private String email;UserService.java
package com.embergarde.com.patterns.other.dto;/** * Business Object / logic */public class UserService private UserDao dao = new UserDao();public UserDTO getUser(Integer id) UserModel model = dao.get(id).get();return convertToDTO(model);public void saveUser(UserDTO dto) UserModel mã sản phẩm = convertToModel(dto);dao.save(model);public void updateUser(UserDTO dto) UserModel model = convertToModel(dto);dao.update(model);private UserModel convertToModel(UserDTO dto) UserModel mã sản phẩm = new UserModel();model.setId(dto.getId());model.setFullName(dto.getFullName());model.setUserName(dto.getUserName());model.setEmail(dto.getEmail());return model;private UserDTO convertToDTO(UserModel model) UserDTO dto = new UserDTO();dto.setId(model.getId());dto.setFullName(model.getFullName());dto.setUserName(model.getUserName());dto.setEmail(model.getEmail());return dto;DataAccessObjectPatternExample.java
package com.embergarde.com.patterns.other.dto;/** * Client - Data Access Object Pattern Example */public class DataAccessObjectPatternExample public static void main(String<> args) UserService service = new UserService();UserDTO dto = service.getUser(1);System.out.println("User: " + dto);dto.setFullName("embergarde.com");service.updateUser(dto);System.out.println("User Updated: " + dto);Output của chương trình:
User: UserDTO(id=1, userName=embergarde.com, fullName=GP Coder, email=embergarde.comvn
gmail.com)User Updated: UserDTO(id=1, userName=embergarde.com, fullName=embergarde.com, email=embergarde.comvn
gmail.com)