ไฮเบอร์เนต - การแมป 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 การแมปส่วนประกอบ

การแม็พสำหรับคลาสที่มีการอ้างอิงไปยังคลาสอื่นเป็นตัวแปรสมาชิก