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.
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 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)
Bình luận