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
ऑब्जेक्ट्स को स्वतंत्र रूप से हेरफेर किया जा सकता है।