เซสชั่นในไฮเบอร์เนตเป็นแคชระดับแรกซึ่งสามารถเข้าใจได้ว่าเป็นแคชระดับกระบวนการ (แถบด้าย) ซึ่งมีอยู่ในระหว่างกระบวนการ (แถบเธรด)
เซสชันสามารถเข้าใจได้ว่าเป็นวัตถุที่สามารถใช้งานฐานข้อมูลและมีวิธีการใช้งานฐานข้อมูลในวัตถุนี้
ใน Java แคชมักหมายถึงพื้นที่หน่วยความจำที่ครอบครองโดยคุณสมบัติของวัตถุ Java ซึ่งมักจะเป็นแอตทริบิวต์ประเภทการรวบรวมบางอย่าง ชุดของคอลเลกชัน Java ถูกกำหนดไว้ในคลาสการใช้งาน SessionImpl ของอินเทอร์เฟซเซสชันและคอลเลกชัน Java เหล่านี้เป็นแคชเซสชัน
โดยทั่วไป (ความเข้าใจของฉันเกี่ยวกับเซสชั่น): เซสชั่นคือมิดเดิลแมน (วัตถุ) ระหว่างไฮเบอร์เนตและฐานข้อมูล มีสองสิ่งหรือฟังก์ชั่นในเซสชัน
(1) วิธีการใช้งานฐานข้อมูล
(2) มีคุณลักษณะบางอย่าง (ชุด ฯลฯ ) ในเซสชั่นซึ่งใช้แอตทริบิวต์เหล่านี้เพื่อจัดเก็บภาษา SQL ที่จะส่งไปยัง DB แคชข้อมูลที่พบจาก DB ฯลฯ
แคชเซสชัน
แคชเซสชันประกอบด้วยชุดของคอลเลกชัน Java เมื่อวัตถุถูกเพิ่มลงในแคชเซสชันการอ้างอิงไปยังวัตถุนี้จะถูกเพิ่มลงในคอลเลกชัน Java ในอนาคตแม้ว่าตัวแปรอ้างอิงในแอปพลิเคชันจะไม่หมายถึงวัตถุอีกต่อไปตราบใดที่แคชเซสชันไม่ได้ถูกล้าง แต่วัตถุจะยังคงอยู่ในวงจรชีวิต
บทบาทของเซสชันแคช:
1) ลดความถี่ในการเข้าถึงฐานข้อมูล
2) ตรวจสอบให้แน่ใจว่าวัตถุในแคชจะถูกเก็บไว้ในการซิงโครไนซ์กับระเบียนที่เกี่ยวข้องในฐานข้อมูล
เวลาทำความสะอาดแคชในเซสชั่น:
1) เมื่อมีการเรียกวิธีการทำธุรกรรม commit () วิธีการ commit () ก่อนทำความสะอาดแคช (ระบุว่า flushmode.commit/auto) ก่อนจากนั้นส่งธุรกรรมไปยังฐานข้อมูล
2) เมื่อแอปพลิเคชันโทรหาเซสชัน () หรือซ้ำ () หากคุณสมบัติของวัตถุถาวรในการเปลี่ยนแปลงแคชแคชจะถูกทำความสะอาดก่อนเพื่อให้แน่ใจว่าผลลัพธ์การสืบค้นสามารถสะท้อนสถานะล่าสุดของวัตถุถาวร
3) เมื่อแอปพลิเคชันแสดงวิธี Flush () ของเซสชันที่เรียกว่า
จุดในเวลาที่โหมดการทำความสะอาดเซสชันดำเนินการดำเนินการแคชการล้างข้อมูล:
อินเตอร์เฟสเซสชัน
อินเทอร์เฟซเซสชันเป็นอินเทอร์เฟซที่สำคัญที่สุดที่จัดทำโดยไฮเบอร์เนตไปยังแอปพลิเคชันสำหรับการจัดการฐานข้อมูล มันมีวิธีการพื้นฐานสำหรับการบันทึกอัปเดตการลบและการสืบค้น
1.Save (): เพิ่มวัตถุชั่วคราวลงในแคชและมันจะกลายเป็นวัตถุถาวร
-> เลือกเครื่องกำเนิดคีย์หลักที่ระบุในไฟล์การแมปเพื่อกำหนด OID ที่ไม่ซ้ำกันให้กับวัตถุถาวร
-> วางแผนคำสั่งแทรกเพื่อรวบรวมค่าคุณสมบัติปัจจุบันของวัตถุพารามิเตอร์ลงในคำสั่งแทรก แต่วิธีการบันทึก () ไม่ได้ดำเนินการคำสั่ง SQLINSERT ทันทีและจะถูกดำเนินการเฉพาะเมื่อเซสชันทำความสะอาดแคช
-> หากคุณสมบัติของวัตถุถาวรได้รับการแก้ไขหลังจากวิธีการบันทึก () เซสชันจะเรียกใช้คำสั่ง sqlupdate เพิ่มเติมเมื่อทำความสะอาดแคช
หมายเหตุ: วิธีการบันทึก () ใช้เพื่อคงไว้ซึ่งวัตถุชั่วคราว!
หากคุณผ่านวัตถุถาวรไปยังวิธีการบันทึก () จะไม่มีการดำเนินการใด ๆ ขั้นตอนซ้ำซ้อน
หากวัตถุสถานะอิสระถูกส่งผ่านไปยังวิธีการบันทึก () เซสชันจะประมวลผลเป็นวัตถุชั่วคราวและแทรกบันทึกลงในฐานข้อมูลอีกครั้งซึ่งไม่ตรงกับความต้องการทางธุรกิจ!
2. อัปเดต (): เพิ่มวัตถุลูกค้าให้เป็นแคชเซสชันอีกครั้งและเปลี่ยนเป็นวัตถุถาวร
---> กำหนดเวลาคำสั่ง UPDATE ซึ่งจะดำเนินการเฉพาะเมื่อมีการทำความสะอาดแคชและค่าแอตทริบิวต์ในวัตถุพารามิเตอร์จะถูกรวมลงในคำสั่ง UPDATE เมื่อดำเนินการ
หมายเหตุ: อัปเดต () แปลงวัตถุฟรีเป็นวัตถุถาวร
ตราบใดที่วัตถุฟรีเชื่อมโยงกับเซสชันผ่านวิธีการอัปเดต () เซสชันจะดำเนินการคำสั่งอัปเดตที่วางแผนโดยวิธีการอัปเดตเมื่อทำความสะอาดแคช
3.SaveOrUpdate (): มันมีทั้งฟังก์ชันของวิธีการบันทึก () และ update () หากพารามิเตอร์ที่ผ่านเป็นวัตถุชั่วคราวให้เรียกใช้วิธีการบันทึก หากพารามิเตอร์เป็นวัตถุฟรีให้เรียกใช้วิธีการอัปเดต () หากพารามิเตอร์ที่ผ่านเป็นวัตถุถาวรให้ส่งคืนโดยตรง
4.load ()/get (): พวกเขาจะโหลดวัตถุถาวรจากฐานข้อมูลตาม OID ที่กำหนด ความแตกต่างคือเมื่อไม่มีระเบียนที่สอดคล้องกับ OID ในฐานข้อมูลวิธีการโหลด () จะโยนข้อยกเว้น ObjectNotFoundException และวิธี GET () จะส่งคืนค่า NULL
5.Delete (): ใช้เพื่อลบระเบียนที่สอดคล้องกับวัตถุพารามิเตอร์จากฐานข้อมูล หากพารามิเตอร์ที่ผ่านเป็นวัตถุถาวรเซสชันจะวางแผนที่จะเรียกใช้คำสั่งลบ หากพารามิเตอร์ที่ผ่านเป็นวัตถุฟรีก่อนอื่นให้ทำวัตถุอิสระที่เกี่ยวข้องกับเซสชันเพื่อให้เป็นวัตถุถาวรจากนั้นวางแผนคำสั่งลบเพื่อดำเนินการเมื่อทำความสะอาดแคช
6.Evict (): ล้างวัตถุถาวรที่ระบุโดยพารามิเตอร์จากแคช
โอกาสที่เกี่ยวข้อง: คุณไม่ต้องการให้เซสชันดำเนินการต่อเพื่ออัปเดตฐานข้อมูลแบบซิงโครนัสตามสถานะของวัตถุ
ในกรณีของการอัปเดตแบทช์หรือการลบแบบแบทช์เมื่อวัตถุได้รับการอัปเดตหรือลบหน่วยความจำที่ถูกครอบครองโดยวัตถุจะถูกปล่อยออกมาในเวลา แน่นอนว่าการดำเนินการแบทช์ให้ความสำคัญกับ JDBC
7.Clear (): ล้างวัตถุถาวรทั้งหมดในแคช
สรุป
ข้างต้นคือความเข้าใจอย่างรวดเร็วเกี่ยวกับเนื้อหาทั้งหมดของเซสชั่นในไฮเบอร์เนตและฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!