Dto adapter pattern java

Transfer Object Pattern là gì?

Transfer Object/ Data Transfer Object Pattern là một trong những dạng Architectural Design Pattern, được sử dụng lúc chúng ta mong muốn truyền dữ liệu hỗ tương thân những tầng trong áp dụng, thân Client – Server. Data Transfer Object (DTO) còn được gọi là Value Object (VO).

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

DTO trọn vẹn không đựng behavior/ logic, chỉ được áp dụng nhằm truyền dữ liệu và map dữ liệu tự các Domain Model trước lúc truyền tới Client. Trong những vận dụng đơn giản dễ dàng, những Domain Model thường có thể được thực hiện lại trực tiếp dưới dạng DTO cùng được truyền thẳng đến lớp hiển thị, cho nên chỉ bao gồm một Data Model thống tốt nhất. Đối cùng với những vận dụng phức hợp rộng, bọn họ không thích hiển thị toàn bộ Domain Model đến Client, vì vậy, việc ánh xạ từ bỏ những Domain Model lịch sự DTO là cần thiết.

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

*

UserModel.java

package com.sydneyowenson.com.patterns.other.dto;import lombok.Data;/** * Domain Model / Entity */

Bạn đang xem: Dto adapter pattern java

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.sydneyowenson.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.sydneyowenson.com.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("sydneyowenson.com");user.setEmail("sydneyowenson.comvn
gmail.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: Cách Xem Ảnh Động Gif Trên Win 7 8 Xp Không Cần Phần Mềm Xem Ảnh Gif Trên Win 7

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.sydneyowenson.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.sydneyowenson.com.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 mã sản phẩm = convertToModel(dto);dao.update(model);private UserModel convertToModel(UserDTO dto) UserModel Model = new UserModel();Model.setId(dto lớn.getId());model.setFullName(dto.getFullName());Model.setUserName(dkhổng lồ.getUserName());Model.setEmail(dto.getEmail());return model;private UserDTO convertToDTO(UserModel model) UserDTO dto lớn = new UserDTO();dto lớn.setId(model.getId());dto.setFullName(Model.getFullName());dlớn.setUserName(Mã Sản Phẩm.getUserName());dlớn.setEmail(mã sản phẩm.getEmail());return dto;DataAccessObjectPatternExample.java

package com.sydneyowenson.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("sydneyowenson.com");service.updateUser(dto);System.out.println("User Updated: " + dto);Output của chương trình:

User: UserDTO(id=1, userName=sydneyowenson.com, fullName=GP Coder, email=sydneyowenson.comvn
email.com)User Updated: UserDTO(id=1, userName=sydneyowenson.com, fullName=sydneyowenson.com, email=sydneyowenson.comvn
tin nhắn.com)

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

Tách biệt súc tích một cách ví dụ : Transfer Object chỉ chứa data, còn xúc tích được implement vào phần không giống.Cãi thiện nay công suất ứng dụng : chi phí của mỗi request/ response là bự, bọn họ đề xuất cố gắng gửi các tuyệt nhất rất có thể. Để làm cho vấn đề này, chúng ta có thể tạo ra một Transfer Object để gửi data từ bỏ Client lên Server giỏi tự Server mang lại Client một lượt duy nhất, vậy vì bắt buộc gửi từng phần lẻ tẻ.Giảm kết nối thân những tầng vào ứng dụng: Client chỉ thao tác làm việc cùng với Transfer Object, nên nó không bị ảnh hưởng khi Domain Model đổi khác.Bao đóng những đối số : một thủ tục có không ít đối số, chúng ta có thể bao đóng bọn chúng vào một Transfer Object. Giúp chúng ta dễ dãi không ngừng mở rộng, thêm/ giảm đối số.Nhận nhiều tài liệu trả về : vào Java, một phương thức chỉ hoàn toàn có thể trả về một cực hiếm, để hoàn toàn có thể dìm được rất nhiều quý hiếm, bạn có thể bao đóng góp bọn chúng trong một Transfer Object.Tăng bảo mật thông tin ứng dụng : tùy theo người dùng khác nhau hoàn toàn có thể coi được một số tài liệu cố định. Chúng ta rất có thể chế tạo nhiều Transfer Object không giống nhau cho từng loại người dùng cố gắng bởi vì trả về một Domain Object một giải pháp thẳng. Trường hợp ví dụ độc nhất là User Model, domain object này đựng công bố cả gmail, password, số tài khoản bank. Chúng ta có thể tạo 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 sinh. Không quan trọng đề nghị trả tất cả tài liệu Domain Model về Client. Tài liệu tmê man khảo: