البحث الرئيسي في هذه المقالة هو إغلاق السبات في الجلسة ، على النحو التالي.
الطالب الطالب = طالب جديد () ؛ student.setName ("Jan") ؛ student.setage ("22") ؛ student.setaddress ("Zhaoqing City ، Guangdong Province") ؛ جلسة الجلسة = hibernateutil.getSessionFactory (). getCurrentsession () ؛ Session.begintransaction () ؛ Session.save (طالب) ؛ session.flush () ؛ session.getTransaction (). الالتزام () ؛ 1. ما هو الفرق بين getCurrentsession () و OpenSession ()؟
getCurrentSession() بالخيط الحالي ، في حين أن الجلسة التي تم إنشاؤها باستخدام openSession() لن تكونgetCurrentSession() تلقائيًا عند الالتزام أو التراجع ، في حين يجب إغلاق الجلسة التي تم إنشاؤها باستخدام openSession() يدويًا. 2. لاستخدام getCurrentSession() تحتاج إلى إضافة التكوين التالي إلى ملف hibernate.cfg.xml:
<property name="hibernate.current_session_context_class">thread</property>
<property name="hibernate.current_session_context_class">jta</property>
ما هو الفرق والعلاقة بين openSession() و getCurrentSession() ؟
عند بدء تشغيل SessionFactory ، ستقوم Hibernate بإنشاء trentrentessessioncontext المقابلة وفقًا للتكوين. عندما يتم استدعاء getCurrentSession() ، فإن الطريقة الفعلية التي سيتم تنفيذها هي CurrentSessionContext.currentSession() . عند تنفيذ currentSession() ، إذا كانت الجلسة الحالية فارغة ، فسيقوم التيارات بالاتصال بـ Opensession of SessionFactory. لذا فإن getCurrentSession() هي طريقة أفضل للحصول على جلسة لجافا إي.
عدة مرات session is close(); والسبب هو أن تقوم بتعيينه في hibernate.cfg.xml
<property name = "hibernate.current_session_context_class"> مؤشر ترابط </property>
يغلق النظام الجلسة بعد commit(); بعد تنفيذها. في هذا الوقت ، إذا قمت بإغلاق الجلسة يدويًا ، فستشير بالطبع إلى وجود خطأ.
ما ورد أعلاه هو كل محتوى هذه المقالة حول تحليل مثيل Hibernate المغلق في الجلسة ، وآمل أن يكون مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!