Hỏi về DTO trong java

lần đầu em nghe về concept này, các bro có thể thông não cho em với được không ạ, có demo tí chút thì càng tốt ạ. Theo em hiểu thì nó là nơi để chứa những data lấy từ database lên, nhưng không hiểu mục đích và cách thức lưu trữ ntn ạ.

1 Like

DTO là cái để bạn dùng để truy xuất dữ liệu một cách “cụ thể”

Thí dụ nếu không sử dụng DTO, khi truy vấn, bạn phải truyền vào

  1. Connection
  2. Query (string)

Từ connection và query, bạn thu được data tuỳ theo loại jdbc, ví dụ như ResultSet
Rồi lại từ ResultSet, bạn phải convert thành kiểu dữ liệu mình mong muốn

Thì với các truy vấn sử dụng thường xuyên, bạn đưa nó vào thành 1 hàm, hàm đó sẽ thực hiện tất cả các công việc trên luôn cho bạn. Hàm đó là một trong các hàm của DTO, ví dụ như hàm “thêm người dùng có id bất kỳ”

1 Like

Vậy nó khác gì với DAO hả bạn. Hay chỉ là tên gọi

Mình không rành lý thuyết lắm
Nhưng trong các project 3 layer mình đã làm thì DTO là Data transfer object
Trong mô hình 3 lớp bạn có:

  1. Presentation Layer (GUI)
  2. Business Logic Layer (BLL)
  3. Data Access Layer (DAL)

Chắc bạn cũng biết chương trình sẽ gọi theo thứ tự 1 → 2 → 3, kết quả sẽ trả ra theo thứ tự 3 → 2 → 1.
Bạn sẽ trả ra thứ gì? string, int, float,…? OK
Nếu bạn cần trả ra object thì sao? thì đó là lúc dùng DTO (data transfer object)
Đơn giản nó chỉ là class mà cả layer 1, 2, 3 đều reference tới, ví dụ class HocSinh
Layer 3 đọc kết quả, gán vào object HocSinh, trả ra object HocSinh cho layer 2, layer 2 trả tiếp object HocSinh đó ra cho layer 1.

1 Like

Data transfer object (DTO)

Không đúng lắm, khi nào cần transfer data giữa các hệ thống thì dùng DTO. trong mô hình n-tier(not layer) code xử lý data sẽ nằm ở 1 server vật lý riêng, data cần được tranfer trong network nên dùng DTO.
Bởi vì data truyền trong network cần được serialize nến khi khái báo DTO cần implement Serializable…
Trong java ngoài tìm hiểu về DTO còn cần biết về VO, POJO, JavaBeans(https://stackoverflow.com/questions/1612334/difference-between-dto-vo-pojo-javabeans)

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?