openSession
: Khi bạn gọi SessionFactory.openSession
, nó luôn tạo một Session
đối tượng mới và đưa nó cho bạn.
Bạn cần phải rõ ràng tuôn ra và đóng các đối tượng phiên này.
Vì các đối tượng phiên không phải là luồng an toàn, bạn cần tạo một đối tượng phiên cho mỗi yêu cầu trong môi trường đa luồng và một phiên cho mỗi yêu cầu trong các ứng dụng web.
getCurrentSession
: Khi bạn gọi SessionFactory.getCurrentSession
, nó sẽ cung cấp cho bạn đối tượng phiên trong bối cảnh ngủ đông và được quản lý bởi chế độ ngủ đông bên trong. Nó bị ràng buộc với phạm vi giao dịch.
Khi bạn gọi SessionFactory.getCurrentSession
, nó tạo ra một cái mớiSession
nếu nó không tồn tại, nếu không thì sử dụng cùng một phiên trong bối cảnh ngủ đông hiện tại. Nó tự động xóa và đóng phiên khi giao dịch kết thúc, vì vậy bạn không cần phải thực hiện bên ngoài.
Nếu bạn đang sử dụng chế độ ngủ đông trong môi trường đơn luồng, bạn có thể sử dụng getCurrentSession
, vì nó có hiệu suất nhanh hơn so với việc tạo một phiên mới mỗi lần.
Bạn cần thêm thuộc tính sau vào hibernate.cfg.xml để sử dụng getCurrentSession
phương thức:
<session-factory>
<!-- Put other elements here -->
<property name="hibernate.current_session_context_class">
thread
</property>
</session-factory>
openSession()
hayclose()
. Anh chỉ gọigetCurrentSession()
. Tôi đoán ông đặtcurrent_session_context
chothread
. Bây giờ tôi nghĩ rằng tôi hiểugetCurrentSession()
. Tuy nhiên, tôi không biết khi nào nên sử dụngopenSession()
.