Transfer Object Pattern là gì?

Transfer Object/ Data Transfer Object Pattern là một dạng Architectural design Pattern, được sử dụng khi bọn họ muốn truyền tài liệu qua lại giữa những tầng trong ứng dụng, giữa Client – Server. Data Transfer Object (DTO) còn gọi là Value Object (VO).

Bạn đang xem: Dto là gì

Transfer Object đơn giản là một POJO (Plain Old Java Object), chỉ chứa những getter/ setter method và hoàn toàn có thể có implement serialize để truyền thiết lập dữ liệu trải qua network.

DTO hoàn toàn không cất behavior/ logic, chỉ được áp dụng để truyền tài liệu và maps dữ liệu từ những Domain model trước lúc truyền tới Client. Trong các ứng dụng 1-1 giản, các Domain mã sản phẩm thường hoàn toàn có thể được thực hiện lại trực tiếp bên dưới dạng DTO cùng được truyền trực tiếp đi học hiển thị, cho nên vì thế chỉ tất cả một Data mã sản phẩm thống nhất. Đối với những ứng dụng tinh vi hơn, họ không ước ao hiển thị cục bộ Domain mã sản phẩm cho Client, vì chưng đó, việc ánh xạ từ các Domain mã sản phẩm sang DTO là nên thiết.

Cài đặt Transfer Object Pattern như vậy nào?


*

UserModel.java

package com.opstinacajnice.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.java

package com.opstinacajnice.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

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.opstinacajnice.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.opstinacajnice.com.patterns.other.dto;/** * Business Object / lô ghích */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 mã sản phẩm = convertToModel(dto);dao.update(model);private UserModel convertToModel(UserDTO dto) UserModel model = 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.opstinacajnice.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("opstinacajnice.com");service.updateUser(dto);System.out.println("User Updated: " + dto);Output của chương trình:

User: UserDTO(id=1, userName=opstinacajnice.com, fullName=GP Coder, email=opstinacajnice.comvngmail.com)User Updated: UserDTO(id=1, userName=opstinacajnice.com, fullName=opstinacajnice.com, email=opstinacajnice.comvngmail.com)

Lợi ích của Transfer Object Pattern là gì?

Tách biệt logic một cách ví dụ : Transfer Object chỉ đựng data, còn lô ghích được implement vào phần khác.Cãi thiện công suất ứng dụng : ngân sách chi tiêu của từng request/ response là lớn, chúng ta nên cố gắng gửi các nhất gồm thể. Để có tác dụng điều này, chúng ta có thể tạo một Transfer Object để gửi data từ bỏ Client lên Server xuất xắc từ Server đến Client một đợt duy nhất, ráng vì buộc phải gửi từng phần riêng biệt lẻ.Giảm kết dính giữa những tầng trong ứng dụng: Client chỉ thao tác với Transfer Object, vì thế nó không bị ảnh hưởng khi Domain mã sản phẩm thay đổi.Bao đóng các đối số : một phương thức có tương đối nhiều đối số, bạn có thể bao đóng bọn chúng trong một Transfer Object. Giúp họ dễ dàng mở rộng, thêm/ sút đối số.Nhận nhiều tài liệu trả về : trong Java, một cách tiến hành chỉ hoàn toàn có thể trả về một giá trị, để hoàn toàn có thể nhận được rất nhiều giá trị, bạn có thể bao đóng chúng trong một Transfer Object.Tăng bảo mật ứng dụng : tùy vào người tiêu dùng khác nhau hoàn toàn có thể xem được một số trong những dữ liệu tốt nhất định. Bạn cũng có thể tạo những Transfer Object không giống nhau cho từng loại người tiêu dùng thay bởi trả về một domain name Object một biện pháp trực tiếp. Trường hợp ví dụ nhất là User Model, tên miền object này chứa tin tức cả email, password, số tài khoản ngân hàng. Chúng ta có thể tạo một Transfer Object dễ dàng và đơn giản chỉ chứa tin tức họ tên, ngày sinh.

Xem thêm: Từ Điển Anh Việt " Zinc Alloy Là Gì Trong Tiếng Việt? Zinc Alloy Là Gì

Không quan trọng phải trả toàn bộ dữ liệu Domain mã sản phẩm về Client. Tài liệu tham khảo: