การวิจัยหลักในบทความนี้คือการปิด Hibernate ในเซสชั่นดังนี้
นักเรียนนักเรียน = นักเรียนใหม่ (); student.setName ("Jan"); Student.setage ("22"); Student.setAddress ("Zhaoqing City, มณฑลกวางตุ้ง"); เซสชั่นเซสชัน = hibernateutil.getSessionFactory (). getCurrentSession (); session.beginTransaction (); เซสชั่น SAVE (นักเรียน); session.flush (); session.getTransaction (). commit (); 1. ความแตกต่างระหว่าง getCurrentSession () และ OpenSession () คืออะไร?
getCurrentSession() จะถูกผูกไว้กับเธรดปัจจุบันในขณะที่เซสชันที่สร้างด้วย openSession() จะไม่เป็นgetCurrentSession() จะถูกปิดโดยอัตโนมัติเมื่อ commit หรือย้อนกลับในขณะที่เซสชันที่สร้างด้วย 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 จะสร้างกระแสที่สอดคล้องกันตามการกำหนดค่า เมื่อเรียกว่า getCurrentSession() วิธีการจริงที่จะดำเนินการคือ CurrentSessionContext.currentSession() เมื่อ currentSession() ถูกดำเนินการหากเซสชันปัจจุบันว่างเปล่า CurrentSess จะเรียกการเปิดเซสชันของ SessionFactory ดังนั้น getCurrentSession() เป็นวิธีที่ดีกว่าในการรับเซสชันสำหรับ Java EE
session is close(); เหตุผลก็คือคุณตั้งค่าใน hibernate.cfg.xml
<property name = "hibernate.current_session_context_class"> เธรด </property>
ระบบปิดเซสชันหลังจาก commit(); หลังจากดำเนินการแล้ว ในเวลานี้ถ้าคุณปิดเซสชันด้วยตนเองแน่นอนว่าจะระบุข้อผิดพลาด
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้เกี่ยวกับการวิเคราะห์อินสแตนซ์ที่ปิดของไฮเบอร์เนตในเซสชั่นฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!