openSession
: Saat Anda menelepon SessionFactory.openSession
, ia selalu membuat Session
objek baru dan memberikannya kepada Anda.
Anda perlu menyiram dan menutup objek sesi ini secara eksplisit.
Karena objek sesi tidak aman utas, Anda perlu membuat satu objek sesi per permintaan dalam lingkungan multi-utas dan satu sesi per permintaan dalam aplikasi web juga.
getCurrentSession
: Ketika Anda menelepon SessionFactory.getCurrentSession
, itu akan memberi Anda objek sesi yang dalam konteks hibernasi dan dikelola oleh hibernasi secara internal. Itu terikat pada ruang lingkup transaksi.
Ketika Anda menelepon SessionFactory.getCurrentSession
, itu membuat yang baru Session
jika tidak ada, jika tidak gunakan sesi yang sama yang ada dalam konteks hibernasi saat ini. Secara otomatis flushes dan menutup sesi ketika transaksi berakhir, jadi Anda tidak perlu melakukannya secara eksternal.
Jika Anda menggunakan hibernasi dalam lingkungan berulir tunggal, Anda dapat menggunakannya getCurrentSession
, karena kinerjanya lebih cepat dibandingkan dengan membuat sesi baru setiap kali.
Anda perlu menambahkan properti berikut ke hibernate.cfg.xml untuk menggunakan getCurrentSession
metode:
<session-factory>
<!-- Put other elements here -->
<property name="hibernate.current_session_context_class">
thread
</property>
</session-factory>
openSession()
atauclose()
. Dia hanya menelepongetCurrentSession()
. Saya kira ia menetapkancurrent_session_context
untukthread
. Sekarang saya pikir saya mengertigetCurrentSession()
. Namun, saya tidak tahu kapan saya harus menggunakannyaopenSession()
.