it-swarm-vi.tech

Các lớp DAO, DTO và Service trong Spring Framework là gì?

Tôi đang viết các dịch vụ RESTful bằng cách sử dụng mùa xuân và ngủ đông. Tôi đọc nhiều tài nguyên trên internet, nhưng họ không làm rõ nghi ngờ của tôi. Vui lòng giải thích cho tôi chi tiết các lớp DAO, DTODịch vụ trong khung mùa xuân là gì? Và tại sao việc sử dụng các lớp này là bắt buộc vào mùa xuân để phát triển các dịch vụ API RESTfull.

39
Prathap Badavath

Trước hết, các khái niệm này là Nền tảng bất khả tri và không dành riêng cho Spring Framework hoặc bất kỳ khung nào khác, cho vấn đề đó.


Đối tượng truyền dữ liệu

DTO là một đối tượng mang dữ liệu giữa các quy trình. Khi bạn đang làm việc với một giao diện từ xa, mỗi cuộc gọi sẽ rất tốn kém. Kết quả là bạn cần giảm số lượng cuộc gọi. Giải pháp là tạo một Data Transfer Object có thể chứa tất cả dữ liệu cho cuộc gọi. Nó cần phải tuần tự hóa để đi qua kết nối. Thông thường, một trình biên dịch được sử dụng ở phía máy chủ để truyền dữ liệu giữa DTO và bất kỳ đối tượng miền nào. Nó thường ít hơn một loạt các lĩnh vực và các getters và setters cho chúng.


Đối tượng truy cập dữ liệu

A Data Access Object tóm tắt và đóng gói tất cả quyền truy cập vào nguồn dữ liệu. DAO quản lý kết nối với nguồn dữ liệu để lấy và lưu trữ dữ liệu.

DAO thực hiện cơ chế truy cập cần thiết để làm việc với nguồn dữ liệu. Nguồn dữ liệu có thể là một cửa hàng liên tục như RDBMS hoặc dịch vụ kinh doanh được truy cập qua REST hoặc SOAP.

DAO trừu tượng hóa việc thực hiện truy cập dữ liệu cơ bản cho các đối tượng Service để cho phép truy cập minh bạch vào nguồn dữ liệu. Service cũng ủy quyền tải dữ liệu và lưu trữ các hoạt động cho DAO.


Dịch vụ

Service các đối tượng đang thực hiện công việc mà ứng dụng cần thực hiện cho miền bạn đang làm việc. Nó bao gồm các tính toán dựa trên dữ liệu đầu vào và dữ liệu được lưu trữ, xác nhận bất kỳ dữ liệu nào xuất phát từ bản trình bày và tìm ra chính xác logic nguồn dữ liệu nào sẽ gửi, tùy thuộc vào các lệnh nhận được từ bản trình bày.

Một Service Layer xác định ranh giới của ứng dụng và tập hợp các hoạt động khả dụng của nó từ góc độ giao thoa các lớp máy khách. Nó gói gọn logic kinh doanh của ứng dụng, kiểm soát các giao dịch và điều phối các phản hồi trong quá trình thực hiện các hoạt động của ứng dụng.


Tài liệu tham khảo được đề xuất

Martin Fowler có một cuốn sách tuyệt vời về phổ biến Các mẫu kiến ​​trúc ứng dụng có tên Các mẫu của kiến ​​trúc ứng dụng doanh nghiệp . Ngoài ra còn có Các mẫu J2EE cốt lõi đáng xem.

50
Ali Dehghani

DAO - Đối tượng truy cập dữ liệ :

Một đối tượng cung cấp một giao diện chung để thực hiện tất cả các hoạt động cơ sở dữ liệu như cơ chế kiên trì.

public interface GenericDao<T> {
  public T find(Class<T> entityClass, Object id);
  public void save(T entity);
  public T update(T entity);
  public void delete(T entity);
  public List<T> findAll(Class<T> entityClass);
}

Xem ví dụ này: Lớp Spring - DAO và Service

DTO - Đối tượng truyền dữ liệ :

Một đối tượng mang dữ liệu giữa các quy trình để giảm số lượng cuộc gọi phương thức có nghĩa là bạn kết hợp nhiều hơn một thực thể POJO trong lớp dịch vụ.

Ví dụ: yêu cầu NHẬN /rest/customer/101/orders là truy xuất tất cả các đơn đặt hàng cho id khách hàng 101 cùng với chi tiết khách hàng do đó bạn cần kết hợp thực thể Customer và thực thể Orders với các chi tiết.

5
vels4j

Ứng dụng doanh nghiệp được chia thành các tầng để dễ dàng bảo trì và phát triển. Các bậc được dành riêng cho loại nhiệm vụ cụ thể như

  • lớp trình bày (UI)
  • Lớp kinh doanh
  • Lớp truy cập dữ liệu (DAO, DTO)

Tại sao thiết kế này: Hãy chọn một ví dụ bạn có một ứng dụng đọc dữ liệu từ db và thực hiện một số logic nghiệp vụ trên đó sau đó trình bày nó cho người dùng. Bây giờ nếu bạn muốn thay đổi DB của mình, giả sử ứng dụng trước đó đang chạy trên Oracle thì bây giờ bạn muốn sử dụng mysql vì vậy nếu bạn không phát triển nó trong các tầng, bạn sẽ thực hiện các thay đổi ở mọi nơi trong ứng dụng. Nhưng nếu bạn thực hiện DAO trong ứng dụng thì điều này có thể được thực hiện dễ dàng

DAO: Đối tượng truy cập dữ liệu là mẫu thiết kế chỉ cung cấp giao diện để truy cập dữ liệu vào lớp dịch vụ và cung cấp các triển khai khác nhau cho các nguồn dữ liệu khác nhau (Cơ sở dữ liệu, Hệ thống tệp)

Mã ví dụ:

public interface DaoService {
    public boolean create(Object record);
    public CustomerTemp findTmp(String id);
    public Customer find(String id);
    public List getAllTmp();
    public List getAll();
    public boolean update(Object record);
    public boolean delete(Object record);   
    public User getUser(String email);
    public boolean addUser(User user);
}

Lớp dịch vụ sử dụng Dao

@Service("checkerService")
public class CheckerServiceImpl implements CheckerService{

@Autowired
@Qualifier("customerService")
private DaoService daoService;

Bây giờ tôi có thể cung cấp bất kỳ triển khai giao diện DaoService. Dịch vụ và DTO cũng được sử dụng để phân tách các mối quan tâm.

4
gajendra kumar

LAYER DỊCH VỤ :

Nó nhận được yêu cầu từ lớp trình điều khiển và xử lý yêu cầu đến lớp Kiên trì

  • @Controll: Đây là chú thích khởi tạo toàn bộ lớp điều khiển.
  • @ Dịch vụ: Đây là chú thích khởi tạo toàn bộ lớp dịch vụ.
  • @ Lưu trữ: Đó là chú thích khởi tạo toàn bộ lớp kiên trì.

ĐẾN :

Nó là một đối tượng truyền dữ liệu được sử dụng để chuyển các thuộc tính từ lớp dịch vụ sang lớp bền vững.

ĐAO :

Nó là một đối tượng truy cập dữ liệu. nó còn được gọi là lớp kiên trì. Trong DAO này, chúng tôi nhận được các giá trị thuộc tính từ lớp dịch vụ trong đối tượng DTO. Ở đây chúng tôi viết một logic kiên trì cho db.

0
Babu Babu