Dao Là Viết Tắt Của Data Access Object Là Gì, Data Access Object

Một trong những khía cạnh quan trọng của lớp nghiệp vụ (business layer) là lớp truy cập dữ liệu (data access layer) để kết nối các dịch vụ (service) với cơ sở dữ liệu (database). Việc truy cập dữ liệu tùy thuộc vào nguồn dữ liệu, loại lưu trữ như database, text file, xml file, json file, …Thậm chí nó khác với cách triển khai của nó, ví dụ: cú pháp truy vấn SQL khác nhau giữa MySQL, SQL Server, Oracle, … Với mong muốn sẽ không có gì khác biệt khi truy cập cơ sở dữ liệu quan hệ, phân tích xml file hay bất kỳ nguồn dữ liệu nào khác, chúng ta có thể áp dụng mẫu thiết kế đối tượng truy cập dữ liệu (Data Access Object PatternDAO Pattern).

Đang xem: Data access object là gì

Nội dung

2 Cài đặt DAO Pattern như thế nào?

DAO Pattern là gì?

Data Access Object (DAO) Pattern là một trong những Pattern thuộc nhóm cấu trúc (Structural Pattern). Mẫu thiết kế DAO được sử dụng để phân tách logic lưu trữ dữ liệu trong một lớp riêng biệt. Theo cách này, các service được che dấu về cách các hoạt động cấp thấp để truy cập cơ sở dữ liệu được thực hiện. Nó còn được gọi là nguyên tắc Tách logic (Separation of Logic).

Xem thêm: Hướng Dẫn Chơi Cities Skylines #1 Best Game Xây Dựng Thành Phố

Ý tưởng là thay vì có logic giao tiếp trực tiếp với cơ sở dữ liệu, hệ thống file, dịch vụ web hoặc bất kỳ cơ chế lưu trữ nào mà ứng dụng cần sử dụng, chúng ta sẽ để logic này sẽ giao tiếp với lớp trung gian DAO. Lớp DAO này sau đó giao tiếp với hệ thống lưu trữ, hệ quản trị CSDL như thực hiện các công việc liên quan đến lưu trữ và truy vấn dữ liệu (tìm kiếm, thêm, xóa, sửa,…).

Xem thêm: Vietgle Tra Từ Provision – Định Nghĩa, Ví Dụ, Giải Thích

*
*

User.java

package com.mister-map.com.patterns.structural.dao;import lombok.AllArgsConstructor;import lombok.Data;
AllArgsConstructorpublic class User {private int id;private String name;private String email;}Dao.java

package com.mister-map.com.patterns.structural.dao;import java.util.List;import java.util.Optional;public interface Dao {List getAll();Optional get(int id);void save(T t);void update(T t);void delete(T t);}UserDao.java

package com.mister-map.com.patterns.structural.dao;import java.util.ArrayList;import java.util.List;import java.util.Optional;public class UserDao implements Dao {private List users = new ArrayList();public UserDao() {users.add(new User(1, “GP Coder”, “contact
Overridepublic Optional get(int id) {return users.stream().filter(u -> u.getId() == id).findFirst();}
Overridepublic void update(User user) {get(user.getId()).ifPresent(existUser -> {existUser.setName(user.getName());existUser.setEmail(user.getEmail());});}
Overridepublic void delete(User user) {get(user.getId()).ifPresent(existUser -> users.remove(existUser));}}DaoPatternExample.java

package com.mister-map.com.patterns.structural.dao;public class DaoPatternExample {private static Dao userDao;public static void main(String<> args) {userDao = new UserDao();User user1 = userDao.get(1).get();System.out.println(“user1: ” + user1);user1.setName(“updated.” + user1.getName());userDao.update(user1);System.out.println(“All users: “);userDao.getAll().forEach(user -> System.out.println(user));}}User.java

user1: User(id=1, name=GP Coder, email=contact
gmail.com)

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

Giảm sự kết nối (loose coupling) giữa logic nghiệp vụ (Business) và logic lưu trữ (Persistence).Mẫu DAO cho phép đóng gói code để thực hiện thao tác CRUD, ngăn chặn việc implement riêng lẻ trong từng phần khác nhau của ứng dụng.Dễ mở rộng, bảo trì: tất cả các chi tiết lưu trữ được ẩn khỏi phần còn lại của ứng dụng. Do đó, những thay đổi có thể được thực hiện bằng cách chỉ sửa đổi một implement của DAO trong khi phần còn lại của ứng dụng không bị ảnh hưởng. DAO hoạt động như một trung gian giữa ứng dụng và cơ sở dữ liệu.Dễ hiểu: mọi người đều theo một quy chuẩn đã được định sẵn, nên dễ hiểu hơn, tiết kiệm được nhiều thời gian hơn.Trong một dự án lớn hơn, các nhóm khác nhau làm việc trên các phần khác nhau của ứng dụng, mẫu DAO cho phép phân tách rõ ràng các thành phần này.

Sử dụng DAO Pattern khi nào?

Khi muốn thay đổi nguồn dữ liệu sau này, như chuyển từ cơ dữ liệu MySQL sang Oracle, SQL Server, …Khi muốn phân tách rõ ràng các thành phần của ứng dụng. Tài liệu tham khảo:

Related Posts