2016-05-03 26 views
33

Mặc dù không phải là người mới, tôi đang cố gắng tìm hiểu khung công tác mùa xuân (một lần nữa!) Để chắc chắn rằng tôi thực sự hiểu điều này. Tôi đã có ý tưởng công bằng về lõi Spring (DI). Bây giờ, tôi đang tập trung vào lớp dữ liệu.Spring + hibernate so với dữ liệu Spring JPA: Chúng có khác nhau không?

Tôi đã xem cụm từ "Mùa xuân và Hibernate". Như tôi có thể giải thích nó có nghĩa là sử dụng Spring Framework với Hibernate như công cụ ORM/nhà cung cấp JPA.

Bây giờ tôi đã bắt gặp "Dữ liệu mùa xuân JPA". Tôi đã làm rõ về SO về Spring JPA dữ liệu, rằng nó là một lớp trừu tượng trên đầu trang của JPA (và dưới mui xe Spring Data JPA sử dụng Hibernate hoặc bất kỳ nhà cung cấp JPA nào khác).

Bây giờ, các thuật ngữ này giống nhau không? Tức là, là "Spring + hibernate" giống như "Dữ liệu mùa xuân JPA". Nếu không, thì sự khác biệt/điểm tương đồng là gì?

Tôi thực sự bối rối về rất nhiều điều khoản/báo cáo (như trên) dường như giống nhau, nhưng có thể khác.

Trả lời

43

Spring-data-jpa, như bạn đang nói, cung cấp nhiều hơn chỉ là tích hợp Spring-JPA cổ điển. Với JPA/Hibernate hội nhập, bạn sẽ có được chủ yếu là

  • quản lý giao dịch khai báo sử dụng các giao dịch JPA/Hibernate
  • ngoại lệ dịch
  • JPA EntityManager hoặc Hibernate SessionFactory như đậu tiêm

với Spring- dữ liệu-jpa, bạn nhận được tất cả những gì, cộng với (trong số những thứ khác)

  • interfa kho ce-chỉ, sử dụng tên phương pháp để suy ra các truy vấn tự động
  • @Query chú thích để xác định các truy vấn mà một phương pháp giao diện nên trở
  • xử lý tự động của pageable truy vấn
  • lớp cơ sở cho kho crud chuẩn

Đây chỉ là một phần giới thiệu nhỏ. Để được trợ giúp thêm, hãy đọc tài liệu.

+2

Cảm ơn rất nhiều vì đã trả lời của bạn. Vì vậy, khi chúng ta thấy "Spring + Hibernate" có nghĩa là Spring sử dụng Hibernate trực tiếp, trong khi đó, khi chúng ta thấy "Spring JPA dữ liệu" có nghĩa là sử dụng trừu tượng jpa dữ liệu spring và jpa provider có thể là bất cứ thứ gì (như Hibernate, eclipselink, vv). jpa có nhiều điều để cung cấp, vài trong số đó bạn đã đề cập trong thư trả lời của bạn. – CuriousMind

+4

Có. Nhưng bạn cũng có thể sử dụng Spring với bất kỳ nhà cung cấp JPA nào, mà không sử dụng Spring-data-jpa. –

+1

Cảm ơn rất nhiều vì đã làm rõ sự nghi ngờ này. Đánh giá cao rất nhiều thời gian của bạn. – CuriousMind

5

khi bạn nói về mùa xuân + ngủ đông

  1. Nếu bạn đọc ngủ đông một mình, bạn sẽ hiểu nó sử dụng bản đồ (mà về cơ bản cấu hình để lập bản đồ của POJO với các mối quan hệ cơ sở dữ liệu) và cấu hình (cấu hình cụ thể để cơ sở dữ liệu như tài xế lớp, url, tên người dùng, mật khẩu, phương ngữ, v.v.).
  2. Vì vậy, bây giờ nếu bạn muốn sử dụng đọc, viết, cập nhật, v.v. bạn phải nhận hibernatesessionfactory, mở giao dịch và cam kết. Rất nhiều công việc trước và sau cho mỗi hoạt động.
  3. Khi bạn tích hợp ngủ đông với mùa xuân, mùa xuân sử dụng cấu hình này và giữ nó trong ngữ cảnh ứng dụng và cung cấp trình bao bọc là hibernatetemplate mà nội bộ sử dụng hibernatesessionfactory. Vì vậy, bạn không cần phải quan tâm nhiều về pre và post code trong khi thực hiện các hoạt động này.
  4. Nó cũng cung cấp bộ đệm ẩn (bộ nhớ cache cấp thứ nhất và thứ hai) để cải thiện hiệu suất.
  5. Và cũng cung cấp cho bạn làm việc với HQL độc lập với cơ sở dữ liệu. Nó sử dụng phương ngữ cơ sở dữ liệu để tạo cơ sở dữ liệu cụ thể sql.

Bây giờ hãy nói về mùa xuân + dữ liệu JPA

  1. nó đi kèm với giao diện kho lưu trữ cơ sở (từ dữ liệu mùa xuân chung, mùa xuân JPA)
  2. Vì vậy, giả sử bạn đang quan tâm đến việc thực hiện thao tác CRUD, chỉ cần mở rộng crud repository, và mùa xuân sẽ tiêm thực hiện của nó tại thời gian chạy.
  3. Cho phép nói rằng bạn muốn xác định phương thức chung cho ứng dụng của mình, bạn có thể thực hiện điều đó bằng cách tạo giao diện kho lưu trữ mở rộng giao diện Repository. Và có thể sử dụng điều này trên ứng dụng.
  4. Nó cũng cung cấp phương pháp truy vấn cho phép bạn sử dụng có nguồn gốc sql or jpql.
Các vấn đề liên quan