ไฮเบอร์เนต - การแมป O / R
จนถึงตอนนี้เราได้เห็นการทำแผนที่ O / R ขั้นพื้นฐานโดยใช้โหมดไฮเบอร์เนต แต่มีหัวข้อการทำแผนที่ที่สำคัญที่สุดสามหัวข้อซึ่งเราต้องเรียนรู้โดยละเอียด
เหล่านี้คือ -
- การทำแผนที่คอลเลกชัน
- การแมปการเชื่อมโยงระหว่างคลาสเอนทิตีและ
- การแมปส่วนประกอบ
การแมปคอลเล็กชัน
หากเอนทิตีหรือคลาสมีการรวบรวมค่าสำหรับตัวแปรเฉพาะเราสามารถแมปค่าเหล่านั้นโดยใช้อินเทอร์เฟซการรวบรวมใด ๆ ที่มีอยู่ใน java ไฮเบอร์เนตสามารถคงอยู่ของไฟล์java.util.Map, java.util.Set, java.util.SortedMap, java.util.SortedSet, java.util.Listและอื่น ๆ array ของเอนทิตีหรือค่าถาวร
ซีเนียร์ | ประเภทคอลเลกชันและคำอธิบายการทำแผนที่ |
---|---|
1 | java.util.Set สิ่งนี้ถูกแมปด้วยองค์ประกอบ <set> และเริ่มต้นด้วย java.util.HashSet |
2 | java.util.SortedSet สิ่งนี้ถูกแมปด้วยองค์ประกอบ <set> และเริ่มต้นด้วย java.util.TreeSet sort แอตทริบิวต์สามารถตั้งค่าเป็นตัวเปรียบเทียบหรือลำดับตามธรรมชาติ |
3 | java.util.List สิ่งนี้ถูกแมปด้วยองค์ประกอบ <list> และเริ่มต้นด้วย java.util.ArrayList |
4 | java.util.Collection สิ่งนี้ถูกแมปด้วยองค์ประกอบ <bag> หรือ <ibag> และเริ่มต้นด้วย java.util.ArrayList |
5 | java.util.Map สิ่งนี้ถูกแมปด้วยองค์ประกอบ <map> และเริ่มต้นด้วย java.util.HashMap |
6 | java.util.SortedMap สิ่งนี้ถูกแมปด้วยองค์ประกอบ <map> และเริ่มต้นด้วย java.util.TreeMap sort แอตทริบิวต์สามารถตั้งค่าเป็นตัวเปรียบเทียบหรือลำดับตามธรรมชาติ |
Hibernate รองรับอาร์เรย์ด้วย <primitive-array> สำหรับชนิดค่าดั้งเดิมของ Java และ <array> สำหรับสิ่งอื่น ๆ อย่างไรก็ตามพวกเขาไม่ค่อยได้ใช้ดังนั้นฉันจะไม่พูดถึงพวกเขาในบทช่วยสอนนี้
หากคุณต้องการแมปอินเทอร์เฟซคอลเลคชันที่ผู้ใช้กำหนดเองซึ่ง Hibernate ไม่รองรับโดยตรงคุณต้องบอก Hibernate เกี่ยวกับความหมายของคอลเล็กชันแบบกำหนดเองของคุณซึ่งไม่ใช่เรื่องง่ายและไม่แนะนำให้ใช้
การแมปสมาคม
การแมปความเชื่อมโยงระหว่างคลาสเอนทิตีและความสัมพันธ์ระหว่างตารางคือจิตวิญญาณของ ORM ต่อไปนี้เป็นสี่วิธีในการแสดงความสำคัญของความสัมพันธ์ระหว่างวัตถุ การแมปการเชื่อมโยงสามารถเป็นแบบทิศทางเดียวและแบบสองทิศทาง
ซีเนียร์ | ประเภทการทำแผนที่และคำอธิบาย |
---|---|
1 | หลายต่อหนึ่ง การแมปความสัมพันธ์แบบกลุ่มต่อหนึ่งโดยใช้ไฮเบอร์เนต |
2 | หนึ่งต่อหนึ่ง การแมปความสัมพันธ์แบบหนึ่งต่อหนึ่งโดยใช้ไฮเบอร์เนต |
3 | หนึ่งต่อหลาย การแมปความสัมพันธ์แบบหนึ่งต่อกลุ่มโดยใช้ไฮเบอร์เนต |
4 | หลายต่อหลายคน การแมปความสัมพันธ์แบบกลุ่มต่อกลุ่มโดยใช้ไฮเบอร์เนต |
การแมปส่วนประกอบ
เป็นไปได้อย่างมากที่คลาสเอนทิตีสามารถมีการอ้างอิงไปยังคลาสอื่นเป็นตัวแปรสมาชิก หากคลาสที่อ้างถึงไม่มีวงจรชีวิตของตัวเองและขึ้นอยู่กับวงจรชีวิตของคลาสเอนทิตีที่เป็นเจ้าของดังนั้นคลาสที่อ้างถึงจึงถูกเรียกว่าเป็นComponent class.
การแมปคอลเลคชันของคอมโพเนนต์ยังสามารถทำได้ในลักษณะเดียวกันเช่นเดียวกับการแมปคอลเลคชันปกติที่มีความแตกต่างของการกำหนดค่าเล็กน้อย เราจะเห็นการแมปทั้งสองนี้โดยละเอียดพร้อมตัวอย่าง
ซีเนียร์ | ประเภทการทำแผนที่และคำอธิบาย |
---|---|
1 | การแมปส่วนประกอบ การแม็พสำหรับคลาสที่มีการอ้างอิงไปยังคลาสอื่นเป็นตัวแปรสมาชิก |