Tôi thấy Spring, JPA hoạt động xung quanh các kho lưu trữ (lớp DAO: nếu tôi không sai). Vậy ý tôi là nó khác nhau như thế nào khi sử dụng 'Spring JPA + Hibernate' hoặc chỉ sử dụng trực tiếp 'Hibernate'?
Như bạn đã nói, JPA là một đặc tả trong khi Hibernate là một triển khai cụ thể của đặc tả đó (các triển khai này thường được gọi là Nhà cung cấp ). Bằng cách sử dụng Hibernate, bạn tự ràng buộc mình với nhà cung cấp đó hạn chế quyền tự do chuyển sang tùy chọn khác khi được yêu cầu (ví dụ: bạn muốn sử dụng EclipseLink hoặc ObjectDB thay vì Hibernate có lỗi làm dừng quá trình phát triển của bạn).
Trích dẫn mùa xuân dữ liệu JPA của tài liệu:
Việc triển khai một lớp truy cập dữ liệu của một ứng dụng đã khá phức tạp trong một thời gian. Quá nhiều mã soạn sẵn phải được viết. Các lớp miền bị thiếu máu và chưa được thiết kế theo cách hướng đối tượng hoặc hướng theo đối tượng thực.
Sử dụng cả hai công nghệ này giúp cuộc sống của các nhà phát triển dễ dàng hơn rất nhiều về sự bền bỉ của mô hình miền. Tuy nhiên, số lượng mã soạn sẵn để thực hiện các kho lưu trữ, đặc biệt vẫn còn khá cao. Vì vậy, mục tiêu của việc trừu tượng hóa kho lưu trữ của Spring Data là giảm nỗ lực triển khai các lớp truy cập dữ liệu cho các cửa hàng lưu trữ lâu dài khác nhau một cách đáng kể.
Tóm lại, nó nằm trên JPA thêm một lớp trừu tượng khác, loại xác định một thiết kế dựa trên tiêu chuẩn để hỗ trợ Lớp bền bỉ trong bối cảnh Mùa xuân. Các giao diện được xác định (được biết đến với Spring) cung cấp các dịch vụ mà khung xử lý bằng cách sử dụng JPA để phục vụ kết quả. Bạn xác định một kho lưu trữ theo cách Spring có thể quét dự án và tìm thấy nó:
<repositories base-package="com.acme.repositories" />
Do đó, cho phép bạn sử dụng nó trong bối cảnh của một container hoặc bên ngoài nó.
Bây giờ chính xác là mùa xuân, JPA. Là Spring, JPA đã thêm một số chức năng (Giao diện) so với JPA và vẫn chỉ được chỉ định hoặc nó cũng là nhà cung cấp JPA?
Spring Data JPA cung cấp một định nghĩa để triển khai các kho lưu trữ được hỗ trợ dưới mui xe bằng cách tham khảo đặc tả JPA, sử dụng nhà cung cấp mà bạn xác định.