Hôm rồi trong lớp SpringBoot 4+5 hỏi về vài khái niệm. Mình ghi tạm ở đây câu trả lời. Ví dụ mẫu sẽ bổ sung vào tháng 10/2021 khi Techmaster bắt đầu khoá đào tạo Spring Boot developer cho lập trình viên tập đoàn VinGroup.

Sinh viên giảng viên

DTO

DTO là cấu trúc dữ liệu tối giản thường là class không có method chỉ dùng để truyền dữ liệu giữa các layer và service

DTO có thể serialize ra JSON hoặc XML hoặc ngược lại từ JSON, XML deserialize thành DTO

DTO có tác dụng che dấu hoặc lược bỏ những trường nhạy cảm trong table như password

Hoặc đôi khi DTO là kết quả join từ nhiều bảng

DAO

DAO là Data Access Object. Một class có những method Create, Update, Delete, Query tác động lên một bảng trong CSDL

DAO là Data Access Object. Một class có những method Create, Update, Delete, Query tác động lên một bảng trong CSDL

Tại sao lại có DAO bởi DAO giúp lập trình viên ở tầng Controller và Service không phải bận tâm viết câu lệnh SQL nữa. Hoặc ở một số framework DAO tự động chuyển đổi tên class, property thành câu lênh SQL tương ứng.

Nhớ có DAO mà chúng ta có thể viết logic một lần nhưng có thể triển khai trên nhiều loại database khác nhau

ORM & Entity

Sau DAO thì người ta nâng lên ORM hỗ trợ Entity ánh xạ xuống bảng, các mối quan hệ OOP tương ưng quan hệ bản, transaction…

Hibernate là điển hình một framework ORM. Chỉ cần định nghĩa class với các annotation. Khi biên dịch là Hibernate tự động sinh ra câu lệnh SQL mà lập trình viên không phải làm

ORM Hibernate

ORM cao cấp hơn DAO giúp dev làm việc với CSDL quan hệ theo cách lập trình hướng đối tượng

Tất nhiên là DAO và ORM khiến việc tuning query khó lên. Hoặc là tuning được thì dev phải biết cả Sql

Entity tương đương với Object trong ORM

Business Domain

Nhưng Entity và Business Domain còn ở mức độ tổng quát hơn

ORM luôn làm việc với CSDL quan hệ

entity, business domain không giới hạn phải làm việc với CSDL quan hệ. Chúng ta tập trung vào nghiệp vụ

Các entity này có method để thực hiện nghiệp vụ. Business Domain nhóm các Entity cùng giải quyết một nghiệp vụ lại như Accounting, HR, CRM, Sales…

Business Domain thường đi cùng ( nhưng không bắt buộc) với microservice

Trong kiến trúc microservice người ta chia thành nhiều business domain

Mỗi microservice tập trung xử lý hoặc thực hiện một business domain

Lúc này không thất thiết các bussiness domain phải được lưu xuống chung một CSDL nữa

Chúng không nói chuyện với nhau bằng quan hệ bảng

Mà giao tiếp với nhau bằng sự kiện (immutable event). Một sự kiện xảy ra sẽ không thay đổi hay đảo ngược được nữa

Để truyền nhận các sự kiện này chúng ta lại dùng Message Queue kiểu như Kafka, RabbitMq

Lúc này CSDL chỉ làm nhiệm vụ lưu những trạng thái ổn định của Entity sau mỗi sự kiện hoặc lưu thông tin phục vụ cho việc báo cáo query report

Khi đã nhìn kiến trúc tổng thể này rồi thì Java, C#, Python, PHP, Go không còn quan trọng nữa. Tất cả đều vận hành trên kiến trúc nguyên lý chung và nói chuyện được với nhau

Tham khảo lộ trình Java Full Stack với Spring Boot dành cho người chuyển nghề, sinh viên CNTT muốn đi thực tập sớm
Liên hệ tư vấn Ms Mẫn - 0963023185 (zalo)