hibernate
एनोटेशन का उपयोग करके हाइबरनेट इकाई संबंध
खोज…
पैरामीटर
| टिप्पणी | विवरण |
|---|---|
@OneToOne | संबंधित वस्तु के साथ एक से एक संबंध निर्दिष्ट करता है। |
@OneToMany | एक एकल ऑब्जेक्ट निर्दिष्ट करता है जो कई ऑब्जेक्ट्स के लिए मैप करता है। |
@ManyToOne | उन वस्तुओं के संग्रह को निर्दिष्ट करता है जो किसी एकल ऑब्जेक्ट पर मैप करते हैं। |
@Entity | किसी ऑब्जेक्ट को डेटाबेस तालिका में मैप करता है। |
@Table | निर्दिष्ट करता है कि कौन सी डेटाबेस तालिका इस ऑब्जेक्ट को भी मैप करती है। |
@JoinColumn | निर्दिष्ट करता है कि किस कॉलम में एक फोरगिन कुंजी संग्रहीत है। |
@JoinTable | एक मध्यवर्ती तालिका निर्दिष्ट करता है जो विदेशी कुंजी संग्रहीत करता है। |
द्वि-दिशात्मक कई उपयोगकर्ता का उपयोग करने वाले कई टेबल ऑब्जेक्ट में शामिल होने में कामयाब रहे
@Entity
@Table(name="FOO")
public class Foo {
private UUID fooId;
@OneToMany(mappedBy = "bar")
private List<FooBar> bars;
}
@Entity
@Table(name="BAR")
public class Bar {
private UUID barId;
@OneToMany(mappedBy = "foo")
private List<FooBar> foos;
}
@Entity
@Table(name="FOO_BAR")
public class FooBar {
private UUID fooBarId;
@ManyToOne
@JoinColumn(name = "fooId")
private Foo foo;
@ManyToOne
@JoinColumn(name = "barId")
private Bar bar;
//You can store other objects/fields on this table here.
}
उपयोगकर्ता को प्रबंधित करने वाली एक इंटरमीडिएट जॉइन टेबल का उपयोग करके कई Bar ऑब्जेक्ट्स के लिए कई Foo ऑब्जेक्ट्स के बीच दो-तरफ़ा संबंध निर्दिष्ट करता है।
Foo वस्तुओं को FOO नामक तालिका में पंक्तियों के रूप में संग्रहीत किया जाता है। Bar ऑब्जेक्ट्स को BAR नामक तालिका में पंक्तियों के रूप में संग्रहीत किया जाता है। Foo और Bar वस्तुओं के बीच संबंध FOO_BAR नामक तालिका में संग्रहीत किए जाते हैं। आवेदन के हिस्से के रूप में एक FooBar ऑब्जेक्ट है।
आमतौर पर तब उपयोग किया जाता है जब आप संबंध बनाने के लिए अतिरिक्त जानकारी संग्रहीत करना चाहते हैं जैसे कि संबंध बनाने की तिथि।
द्वि-दिशात्मक कई हाइबरनेट का उपयोग करने वाले कई लोग तालिका में शामिल हुए
@Entity
@Table(name="FOO")
public class Foo {
private UUID fooId;
@OneToMany
@JoinTable(name="FOO_BAR",
joinColumns = @JoinColumn(name="fooId"),
inverseJoinColumns = @JoinColumn(name="barId"))
private List<Bar> bars;
}
@Entity
@Table(name="BAR")
public class Bar {
private UUID barId;
@OneToMany
@JoinTable(name="FOO_BAR",
joinColumns = @JoinColumn(name="barId"),
inverseJoinColumns = @JoinColumn(name="fooId"))
private List<Foo> foos;
}
कई Foo ऑब्जेक्ट्स के बीच एक इंटरमीडिएट जॉइन टेबल का उपयोग करके कई Bar ऑब्जेक्ट्स के बीच संबंध निर्दिष्ट करता है जो हाइबरनेट का प्रबंधन करता है।
Foo वस्तुओं को FOO नामक तालिका में पंक्तियों के रूप में संग्रहीत किया जाता है। Bar ऑब्जेक्ट्स को BAR नामक तालिका में पंक्तियों के रूप में संग्रहीत किया जाता है। Foo और Bar वस्तुओं के बीच संबंध FOO_BAR नामक तालिका में संग्रहीत किए जाते हैं। हालांकि इसका तात्पर्य है कि आवेदन के हिस्से के रूप में कोई FooBar ऑब्जेक्ट नहीं है।
विदेशी कुंजी मानचित्रण का उपयोग करके द्वि-दिशात्मक एक से कई रिश्ते
@Entity
@Table(name="FOO")
public class Foo {
private UUID fooId;
@OneToMany(mappedBy = "bar")
private List<Bar> bars;
}
@Entity
@Table(name="BAR")
public class Bar {
private UUID barId;
@ManyToOne
@JoinColumn(name = "fooId")
private Foo foo;
}
एक विदेशी कुंजी का उपयोग करके कई Bar वस्तुओं के लिए एक Foo वस्तु के बीच दो-तरफ़ा संबंध निर्दिष्ट करता है।
Foo वस्तुओं को FOO नामक तालिका में पंक्तियों के रूप में संग्रहीत किया जाता है। Bar ऑब्जेक्ट्स को BAR नामक तालिका में पंक्तियों के रूप में संग्रहीत किया जाता है। विदेशी कुंजी को BAR टेबल पर fooId नामक कॉलम में संग्रहित किया जाता है।
द्वि-दिशात्मक एक से एक संबंध Foo.class द्वारा प्रबंधित
@Entity
@Table(name="FOO")
public class Foo {
private UUID fooId;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "barId")
private Bar bar;
}
@Entity
@Table(name="BAR")
public class Bar {
private UUID barId;
@OneToOne(mappedBy = "bar")
private Foo foo;
}
विदेशी कुंजी का उपयोग करके एक Bar ऑब्जेक्ट से एक Foo ऑब्जेक्ट के बीच दो-तरफ़ा संबंध निर्दिष्ट करता है।
Foo वस्तुओं को FOO नामक तालिका में पंक्तियों के रूप में संग्रहीत किया जाता है। Bar ऑब्जेक्ट्स को BAR नामक तालिका में पंक्तियों के रूप में संग्रहीत किया जाता है। विदेशी कुंजी पर संग्रहीत है FOO नामक कॉलम में तालिका barId ।
ध्यान दें कि mappedBy मान ऑब्जेक्ट पर फ़ील्ड नाम है, स्तंभ नाम नहीं।
यूनी-डायरेक्शनल वन टू कई रिलेशनशिप यूज़र्स यूज़ेड टेबल में शामिल हुए
@Entity
@Table(name="FOO")
public class Foo {
private UUID fooId;
@OneToMany
@JoinTable(name="FOO_BAR",
joinColumns = @JoinColumn(name="fooId"),
inverseJoinColumns = @JoinColumn(name="barId", unique=true))
private List<Bar> bars;
}
@Entity
@Table(name="BAR")
public class Bar {
private UUID barId;
//No Mapping specified here.
}
@Entity
@Table(name="FOO_BAR")
public class FooBar {
private UUID fooBarId;
@ManyToOne
@JoinColumn(name = "fooId")
private Foo foo;
@ManyToOne
@JoinColumn(name = "barId", unique = true)
private Bar bar;
//You can store other objects/fields on this table here.
}
उपयोगकर्ता को प्रबंधित करता है जो एक मध्यवर्ती ज्वाइन टेबल का उपयोग करके कई Bar ऑब्जेक्ट के लिए एक Foo वस्तु के बीच एक तरह से संबंध निर्दिष्ट करता है।
यह एक ManyToMany रिश्ते के समान है, लेकिन यदि आप लक्ष्य विदेशी कुंजी में एक unique बाधा जोड़ते हैं तो आप यह OneToMany सकते हैं कि यह OneToMany ।
Foo वस्तुओं को FOO नामक तालिका में पंक्तियों के रूप में संग्रहीत किया जाता है। Bar ऑब्जेक्ट्स को BAR नामक तालिका में पंक्तियों के रूप में संग्रहीत किया जाता है। Foo और Bar वस्तुओं के बीच संबंध FOO_BAR नामक तालिका में संग्रहीत किए जाते हैं। आवेदन के हिस्से के रूप में एक FooBar ऑब्जेक्ट है।
ध्यान दें कि Foo वस्तुओं में Bar ऑब्जेक्ट्स की मैपिंग नहीं है। Foo ऑब्जेक्ट्स को प्रभावित किए बिना Bar ऑब्जेक्ट्स को स्वतंत्र रूप से हेरफेर किया जा सकता है।
आमतौर पर स्प्रिंग सिक्योरिटी के साथ उपयोग किया जाता है जब एक User ऑब्जेक्ट की स्थापना होती है जिसके पास Role की एक सूची होती है जो वे प्रदर्शन कर सकते हैं। आप को हटाने झरने के बारे में चिंता किए बिना एक उपयोगकर्ता के लिए जोड़ सकते हैं और भूमिकाओं को हटा सकते हैं Role की।
यूनी-डायरेक्शनल वन टू वन रिलेशनशिप
@Entity
@Table(name="FOO")
public class Foo {
private UUID fooId;
@OneToOne
private Bar bar;
}
@Entity
@Table(name="BAR")
public class Bar {
private UUID barId;
//No corresponding mapping to Foo.class
}
एक Bar वस्तु के लिए एक Foo वस्तु के बीच एक तरह से संबंध निर्दिष्ट करता है।
Foo वस्तुओं को FOO नामक तालिका में पंक्तियों के रूप में संग्रहीत किया जाता है। Bar ऑब्जेक्ट्स को BAR नामक तालिका में पंक्तियों के रूप में संग्रहीत किया जाता है।
ध्यान दें कि Foo वस्तुओं में Bar ऑब्जेक्ट्स की मैपिंग नहीं है। Foo ऑब्जेक्ट्स को प्रभावित किए बिना Bar ऑब्जेक्ट्स को स्वतंत्र रूप से हेरफेर किया जा सकता है।





