DTO LÀ GÌ

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.java

package 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)

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

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

Leave a Reply

Your email address will not be published. Required fields are marked *

CÙNG CHUYÊN MỤC MỚI

  • Connect broadband connection là gì

  • Hgu và sfu là gì

  • Enter network credentials là gì

  • Rela có nghĩa là gì

  • x

    Welcome Back!

    Login to your account below

    Retrieve your password

    Please enter your username or email address to reset your password.