Dto là gì

Transfer Object Pattern là gì?

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

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

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

DTO hoàn toàn không đựng behavior/ ngắn gọn xúc tích, chỉ được sử dụng để truyền dữ liệu cùng map dữ liệu từ bỏ những Domain Model trước lúc truyền tới Client. Trong các áp dụng dễ dàng và đơn giản, các Domain Model hay hoàn toàn có thể được sử dụng lại trực tiếp dưới dạng DTO và được truyền trực tiếp đi học hiển thị, do đó chỉ tất cả một Data Model thống nhất. Đối cùng với các vận dụng phức tạp hơn, chúng ta không thích hiển thị toàn cục Domain Model mang đến Client, vì thế, bài toán ánh xạ từ các Domain Model quý phái DTO là cần thiết.

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


*

UserModel.java

package com.realchampionshipwrestling.com .patterns.other.dto;import lombok.Data;/** * Domain Model / Entity */quý khách đang xem: Dto lớn 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.realchampionshipwrestling.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.realchampionshipwrestling.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.realchampionshipwrestling.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 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(dkhổng lồ.getId());Mã Sản Phẩm.setFullName(dlớn.getFullName());model.setUserName(dto lớn.getUserName());Mã Sản Phẩm.setEmail(dto lớn.getEmail());return model;private UserDTO convertToDTO(UserModel model) UserDTO dto lớn = new UserDTO();dkhổng lồ.setId(Model.getId());dto lớn.setFullName(Model.getFullName());dto.setUserName(mã sản phẩm.getUserName());dlớn.setEmail(Mã Sản Phẩm.getEmail());return dto;DataAccessObjectPatternExample.java

package com.realchampionshipwrestling.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 lớn = service.getUser(1);System.out.println("User: " + dto);dto lớn.setFullName("realchampionshipwrestling.com");service.updateUser(dto);System.out.println("User Updated: " + dto);đầu ra của chương trình:

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 cách rõ ràng : Transfer Object chỉ đựng data, còn logic được implement trong phần khác.Cãi thiện nay công suất ứng dụng : chi phí của mỗi request/ response là lớn, bọn họ bắt buộc cố gắng gửi các duy nhất có thể. Để làm cho vấn đề đó, bạn có thể sản xuất một Transfer Object để gửi data trường đoản cú Client lên Server hay từ bỏ Server cho Client một lượt độc nhất vô nhị, cầm vì chưng bắt buộc gửi từng phần cá biệt.Giảm kết dán thân các 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 xẩy ra ảnh hưởng Lúc Domain Model đổi khác.Bao đóng góp các đối số : một phương thức có rất nhiều đối số, chúng ta cũng có thể bao đóng góp bọn chúng vào một Transfer Object.

Xem thêm: Ngỡ Ngàng Với Cách Tăng Cân Cho Gà Chọi Đơn Giản, Cách Tăng, Giảm Cân Cho Gà Chọi

Giúp chúng ta thuận tiện không ngừng mở rộng, thêm/ bớt đối số.Nhận nhiều dữ liệu trả về : trong Java, một thủ tục chỉ hoàn toàn có thể trả về một giá trị, nhằm hoàn toàn có thể thừa nhận được nhiều cực hiếm, chúng ta cũng có thể bao đóng góp bọn chúng vào một Transfer Object.Tăng bảo mật thông tin ứng dụng : tùy thuộc theo người tiêu dùng khác nhau rất có thể xem được một số dữ liệu khăng khăng. Chúng ta có thể sinh sản những Transfer Object không giống nhau đến từng các loại người dùng nắm vị trả về một Domain Object một cách trực tiếp. Trường đúng theo rõ ràng tốt nhất là User Model, domain name object này chứa công bố cả tin nhắn, password, số tài khoản bank. Chúng ta rất có thể tạo nên một Transfer Object dễ dàng và đơn giản chỉ đựng biết tin bọn họ tên, ngày sinch. Không cần thiết bắt buộc trả toàn bộ tài liệu Domain Model về Client. Tài liệu tmê mẩn khảo: