Avatar
1
cuongtrinh Beginner
cuongtrinh Beginner
Câu hỏi về DTO, DAO, Entity và Redis
Chào mọi người, câu hỏi của em là về cách phân biệt và mục đích sử dụng của 3 loại object DAO, DTO và Entity, em đã tìm hiểu nhưng chưa hiểu rõ ràng về 3 định nghĩa này.

Câu hỏi thứ 2 là về Redis và cách quản lí dữ liệu trong Redis: em đã tìm đọc doc về redis-cli nhưng khi em get key ra thì nó có định dạng [filter][option]var_name, không biết cách lưu trữ của Redis là gì, và khi run 1 project Java được connect vs Redis, thì mục đích sử dụng của nó khác gì so với MySQL, PostgreSQL, với ví dụ là dự án đặt phòng trực tuyến (login, order, search, ...)

Cảm ơn mọi người vì đã đọc và phản hồi, chúc các a/c một ngày tốt lành ạ !

  • Answer
Remain: 5
1 Answer
Avatar
tvd12 Beginner
tvd12 Beginner
Câu hỏi của em lớn quá, lần tới em tách thành 2 nhé.

  1. Mục đích sử dụng của 3 loại

    1. DAO Là đối tượng chuyên để truy xuất đến cơ sở dữ liệu, trong spring hay ezyfox đó chính là các Repository.
  1. 2 Entity: là lớp đại diện cho 1 bảng trong cơ sở dữ liệu, dữ liệu khi được lấy ra từ cơ sở dữ liệu bở DAO sẽ lưu vào các Entity này
  2. 3 DTO: Là các lớp trung chuyển dữ liệu. Chính là các đối tượng request hay response hay các đối tượng mà em dùng để giao tiếp giữa các tầng controller và service đó. Bởi vì các đối tượng Entity có thể chứa các dữ liệu nhạy cảm như mật khẩu, hay các dữ liệu mà em không muốn trả hết về cho client thì em sẽ dùng DTO như là 1 cách để tuỳ biến các trường dữ liệu gửi nhận.

  1. Redis cơ bản có dạng dữ liệu Map (Dictionary) hay key value, và nó có 2 dạng 1 là HashMap (hash table) không có thứ tự, tốc độ insert và tìm kiến là O(1), và SortedMap dữ liệu có thứ tự và độ phức tạp tìm kiến là O(log(n)) và nó sẽ kiểu thế này:

- key lv1
  - value11
  - value12
  - key lv2
    + value121
    + value122
- key lv2
  - value21
  - value22
  - key lv2
    + value221
    + value222

  1. Redis là memcache, có nghĩa là dữ liệu sẽ được lưu trên RAM thay vì lưu trể ổ cứng như MySQL hay các hệ quản trị csdl khác, và các hệ quản trị cơ sở dữ liệu thường dùng BTree nên độ phức tạp truy xuất data cũng là O(log(n)) nên Redis sẽ nhanh hơn, nhưng nó lại không hỗ trợ được việc join dữ liệu, nên thường được dùng cho các loại dữ liệu dạng key-value và đòi hỏi tốc độ truy cập nhanh. Ngoài ra Redis cũng cung cấp cả cơ chế pubsub message nữa nên khá là tiện em ạ.
  • 0
  • Reply
Em cảm ơn anh vì câu trả lời chi tiết, hôm nay em mới nhận được email thông báo a ạ  –  cuongtrinh 1642279863000
ok em  –  tvd12 1642282572000