Tôi đã cố gắng tìm hiểu mùa xuân và ngủ đông, và tôi đã sử dụng rất nhiều ví dụ trên mạng để đặt cùng một ứng dụng tốt đẹp. Tuy nhiên, tôi nhận ra rằng Spring hỗ trợ quản lý giao dịch. Trong ứng dụng mùa xuân của tôi, tôi chỉ đơn giản là thực hiện bất kỳ cuộc gọi nào tôi muốn, trực tiếp đến ngủ đông. Có một lý do/lợi ích là tại sao mọi người sẽ sử dụng công cụ quản lý giao dịch/db của Spring?Lợi ích của việc sử dụng Quản lý giao dịch Springs và sử dụng hibernate
Trả lời
Các lợi thế thực sự là:
Lightweight cú pháp khai báo. Hãy so sánh:
public void saveEmployee(Employee e) { Session s = sf.getCurrentSession(); s.getTransaction().begin(); s.save(e); s.getTransaction().commit(); }
và
@Transactional public void saveEmployee(Employee e) { sf.getCurrentSession().save(e); }
tuyên truyền giao dịch linh hoạt. Hãy tưởng tượng rằng bây giờ bạn cần thực hiện phương thức
saveEmployee()
này như một phần của một giao dịch phức tạp.Với quản lý giao dịch thủ công, bạn cần phải thay đổi phương thức vì quản lý giao dịch được mã hóa cứng. Với mùa xuân, công tác tuyên truyền giao dịch hoạt động trơn tru:@Transactional public void hireEmployee(Employee e) { dao.saveEmployee(e); doOtherStuffInTheSameTransaction(e); }
rollback tự động trong trường hợp ngoại lệ
Tôi đoán tôi nên hỏi sau đó, lợi ích của việc sử dụng hibernate với Spring là gì? Liệu Hibernate vẫn mang cái gì đó đến bàn? –
@ John: So với mùa xuân không có Hibernate hoặc Hibernate không có Spring? – axtavt
Tôi đang cố gắng hiểu tại sao một người nào đó thực sự sẽ sử dụng Hibernate nếu họ có Spring. Có vẻ như Hibernate đang mua chúng nhiều. Hoặc có lẽ tôi đang thiếu một cái gì đó. –
Các spring's reference doc đề cập đến nó rất rõ ràng
Các Spring Framework cung cấp một trừu tượng phù cho giao dịch quản lý mang lại sự lợi ích sau:
- Cung cấp một mô hình lập trình nhất quán trên các giao dịch khác nhau Các API như JTA, JDBC, Hibernate, JPA và JDO.
- Hỗ trợ quản lý giao dịch khai báo.
- Cung cấp API đơn giản hơn để quản lý giao dịch có lập trình so với một số giao dịch phức tạp API chẳng hạn như JTA.
- Tích hợp rất tốt với các trừu tượng truy cập dữ liệu khác nhau của Spring.
Cung cấp một mô hình lập trình nhất quán trên các giao dịch khác nhau API như JTA, JDBC, Hibernate, JPA, và JDO.
Giả sử bạn hiện đang sử dụng api hibernate để quản lý giao dịch và đôi khi xuống con đường bạn muốn chuyển sang JDO. Điều này đòi hỏi phải thay đổi mã quản lý giao dịch. Nếu bạn sử dụng Spring thì không có thay đổi.
Hỗ trợ quản lý giao dịch khai báo.
Tương tự như EJB
Cung cấp một API đơn giản cho việc quản lý giao dịch theo chương trình hơn một số giao dịch phức tạp API như JTA.
JTA và JDBC có các API khác nhau để quản lý giao dịch. Spring tóm tắt điều đó bằng cách cung cấp một API thống nhất.
Có nhưng về mặt thực tế, tôi không chắc điều đó có nghĩa là gì. Thực hành tiêu chuẩn có sử dụng quản lý giao dịch của Spring trên Hibernates không? Bạn không thiếu một số lợi ích của việc sử dụng ngủ đông theo cách này? –
@ John Baker - Không, bạn không. Spring's HibernateTransactionManager (không ngạc nhiên) sử dụng các tính năng của các giao dịch của Hibernate, trong khi vẫn duy trì lợi thế của các trừu tượng giao dịch thống nhất của Spring. Nếu bạn đang sử dụng Spring và bạn đang sử dụng các giao dịch, thì bạn nên sử dụng các giao dịch của Spring. – OrangeDog
- 1. Chính xác là lợi ích của việc sử dụng Punjab
- 2. Giao dịch lồng nhau sử dụng Spring và Hibernate
- 3. Lợi ích của việc sử dụng một hàm tạo?
- 4. Lợi ích của việc sử dụng epoll_create1() thay vì epoll_create()
- 5. lợi ích của việc sử dụng directoryperdb trong MongoDB
- 6. Lợi ích và bất lợi của việc sử dụng java rmi
- 7. Lợi ích/lợi thế của việc sử dụng Python 3 là gì?
- 8. lợi thế của việc sử dụng giao diện là gì
- 9. Lợi ích của việc sử dụng enums qua trực tiếp sử dụng các loại tích phân?
- 10. Lợi ích của việc sử dụng Roslyn - compiler là một dịch vụ
- 11. Quản lý phiên sử dụng Hibernate trong ứng dụng Swing
- 12. Sử dụng cả phiên JASS EntityManager và Hibernate với trình quản lý giao dịch được chia sẻ trong Spring
- 13. Quản lý giao dịch Hibernate tự động với Spring?
- 14. Tại sao nên sử dụng Giao diện, Đa thừa kế và Giao diện, Lợi ích của Giao diện?
- 15. Lợi ích của việc sử dụng WPF trên Windows Forms là gì?
- 16. Lợi ích của việc biên dịch mã C với giao diện C++ của gcc
- 17. Lợi ích của việc sử dụng ổ cắm không chặn với chức năng "chọn" là gì?
- 18. Việc sử dụng/lợi thế của việc sử dụng CommandBehavior.CloseConnection trong ExecuteReader()
- 19. Ưu điểm của việc sử dụng Gọi lại Hibernate?
- 20. Lợi ích chính của việc sử dụng Haskell để phát triển web là gì?
- 21. Trình quản lý giao dịch nào sẽ sử dụng? (JPA, Spring)
- 22. Hibernate PostInsertEventListeners -Sử dụng cùng một giao dịch như chèn?
- 23. Lợi ích của việc phát triển ứng dụng như một dịch vụ windows là gì?
- 24. Việc sử dụng @Transactional có vô hiệu hóa quản lý giao dịch mặc định của grails hay không
- 25. Lợi ích của việc sử dụng C# vs F # hoặc F # so với C# là gì?
- 26. Lợi ích của việc sử dụng Lớp học trong VBA là gì?
- 27. Lợi ích của việc sử dụng các con trỏ chức năng
- 28. Lợi ích của giao diện điều khiển ứng dụng trên cửa sổ dịch vụ
- 29. Lợi ích của việc sử dụng System.Diagnostics.Debugger.Break() qua Đính kèm quy trình là gì?
- 30. Có lợi ích thực sự khi sử dụng J # không?
Bạn đang sử dụng hai giai đoạn cam kết một cơ sở dữ liệu cũng như ở một nơi khác - Sử dụng mùa xuân. hãy chọn cái bạn muốn sử dụng. –
Cam kết hai giai đoạn là gì nếu tôi có thể yêu cầu? –