Dto là gì

Transfer Object Pattern là gì?

Transfer Object/ Data Transfer Object Pattern là 1 dạng Architectural Design Pattern, được thực hiện Lúc họ ao ước truyền tài liệu tương hỗ thân các tầng vào ứng dụng, thân Client – Server. Data Transfer Object (DTO) còn được gọi là Value Object (VO).

Transfer Object đơn giản dễ dàng là một POJO (Plain Old Java Object), chỉ đựng những getter/ setter method với rất có thể có implement serialize để truyền mua dữ liệu trải qua network.

DTO hoàn toàn ko chứa behavior/ ngắn gọn xúc tích, chỉ được sử dụng để truyền tài liệu và bản đồ tài liệu tự những Domain Model trước khi truyền tới Client. Trong những vận dụng đơn giản và dễ dàng, những Domain Model thường hoàn toàn có thể được sử dụng lại thẳng bên dưới dạng DTO cùng được truyền thẳng đi học hiển thị, do đó chỉ gồm một Data Model thống độc nhất. Đối với các vận dụng tinh vi rộng, bọn họ không thích hiển thị toàn bộ Domain Model mang đến Client, vì thế, câu hỏi ánh xạ từ những Domain Model thanh lịch DTO là quan trọng.

Cài đặt Transfer Object Pattern như thế nào?

*

UserModel.java

package com.au-79.net.patterns.other.dto;import lombok.Data;/** * Domain Model / 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.au-79.net.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.au-79.net.patterns.other.dto;import java.util.ArrayList;import java.util.List;import java.util.Optional;public class UserDao implements Dao // Temporary databaseprivate List users = new ArrayList();public UserDao() UserModel user = new UserModel();user.setId(1);user.setUserName("au-79.net");user.setEmail("au-79.netvn
tin nhắn.com");user.setFullName("GPhường. Coder");user.setPassword("1234567");user.setBankAccount("9999-9999-9999");users.add(user);
Overridepublic List getAll() return users;
Overridepublic Optional get(Integer id) return users.stream().filter(u -> u.getId() == id).findFirst();


Xem thêm: Người Tuổi Mão Hợp Màu Gì? Xây Nhà Nên Lưu Ý Màu Sắc Gì Để Thần Tài Gõ Cửa?

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.au-79.net.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.au-79.net.patterns.other.dto;/** * Business Object / Logic */public class UserService private UserDao dao = new UserDao();public UserDTO getUser(Integer id) UserModel mã sản phẩm = dao.get(id).get();return convertToDTO(model);public void saveUser(UserDTO dto) UserModel Model = convertToModel(dto);dao.save(model);public void updateUser(UserDTO dto) UserModel Model = convertToModel(dto);dao.update(model);private UserModel convertToModel(UserDTO dto) UserModel Model = new UserModel();mã sản phẩm.setId(dkhổng lồ.getId());model.setFullName(dlớn.getFullName());Model.setUserName(dto lớn.getUserName());mã sản phẩm.setEmail(dkhổng lồ.getEmail());return model;private UserDTO convertToDTO(UserModel model) UserDTO dto = new UserDTO();dto.setId(Mã Sản Phẩm.getId());dto.setFullName(Model.getFullName());dlớn.setUserName(Model.getUserName());dlớn.setEmail(model.getEmail());return dto;DataAccessObjectPatternExample.java

package com.au-79.net.patterns.other.dto;/** * Client - Data Access Object Pattern Example */public class DataAccessObjectPatternExample public static void main(String<> args) UserService service = new UserService();UserDTO dkhổng lồ = service.getUser(1);System.out.println("User: " + dto);dkhổng lồ.setFullName("au-79.net");service.updateUser(dto);System.out.println("User Updated: " + dto);đầu ra của chương trình:

User: UserDTO(id=1, userName=au-79.net, fullName=GPhường Coder, email=au-79.netvn


Xem thêm: 13 Mẹo Bố Trí Văn Phòng Làm Việc Hiện Đại Phổ Biến Nhất!, 20+ Cách Bố Trí Văn Phòng Công Ty Đẹp

email.com)User Updated: UserDTO(id=1, userName=au-79.net, fullName=au-79.net, email=au-79.netvn
gmail.com)

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

Tách biệt xúc tích và ngắn gọn một biện pháp ví dụ : Transfer Object chỉ chứa data, còn súc tích được implement trong phần khác.Cãi thiện hiệu suất ứng dụng : ngân sách của mỗi request/ response là Khủng, họ đề xuất nỗ lực gửi các nhất có thể. Để làm điều này, chúng ta cũng có thể chế tạo một Transfer Object để gửi data từ bỏ Client lên Server hay từ Server đến Client một lượt tốt nhất, nắm vì chưng yêu cầu gửi từng phần cô đơn.Giảm kết nối thân những tầng vào ứng dụng: Client chỉ làm việc cùng với Transfer Object, cho nên nó không bị tác động khi Domain Model biến hóa.Bao đóng các đối số : một thủ tục có nhiều đối số, chúng ta có thể bao đóng chúng vào một Transfer Object. Giúp bọn họ dễ dãi mở rộng, thêm/ giảm đối số.Nhận các dữ liệu trả về : vào Java, một cách tiến hành chỉ có thể trả về một quý giá, nhằm hoàn toàn có thể dìm được rất nhiều cực hiếm, chúng ta có thể bao đóng chúng trong một Transfer Object.Tăng bảo mật thông tin ứng dụng : tùy thuộc theo người dùng khác nhau hoàn toàn có thể xem được một số dữ liệu nhất thiết. Chúng ta có thể chế tác nhiều Transfer Object khác biệt mang đến từng nhiều loại người dùng vắt bởi vì trả về một Domain Object một bí quyết thẳng. Trường hợp rõ ràng duy nhất là User Model, domain object này cất thông tin cả email, password, số tài khoản ngân hàng. Chúng ta có thể tạo nên một Transfer Object đơn giản và dễ dàng chỉ chứa báo cáo chúng ta thương hiệu, ngày sinch. Không cần thiết đề xuất trả toàn bộ dữ liệu Domain Model về Client. Tài liệu tsay mê khảo:


Chuyên mục: Blockchain