jpa
संस्थाओं के बीच संबंध
खोज…
टिप्पणियों
संस्थाओं के बीच संबंध मूल बातें
एक विदेशी कुंजी एक या एक से अधिक स्तंभ हो सकती है जो एक अद्वितीय कुंजी, आमतौर पर प्राथमिक कुंजी, एक अन्य तालिका में संदर्भित करती है।
एक विदेशी कुंजी और प्राथमिक मूल कुंजी जिसके संदर्भ में समान संख्या और फ़ील्ड होनी चाहिए।
विदेशी कुंजियाँ एक तालिका में किसी स्तंभ या स्तंभ से किसी तालिका में स्तंभ या स्तंभ से संबंधों का प्रतिनिधित्व करती हैं।
इकाई संबंधों में बहुलता
इकाई संबंधों में बहुलता
बहुविकल्पी निम्न प्रकार के होते हैं:
- एक-से-एक : प्रत्येक इकाई का उदाहरण किसी अन्य इकाई के एकल उदाहरण से संबंधित होता है।
- एक से कई : एक इकाई उदाहरण अन्य संस्थाओं के कई उदाहरणों से संबंधित हो सकता है।
- कई-से-एक : एक इकाई के कई उदाहरण दूसरी इकाई के एकल उदाहरण से संबंधित हो सकते हैं।
- कई-से-कई : इकाई उदाहरण एक-दूसरे के कई उदाहरणों से संबंधित हो सकते हैं।
वन-टू-वन मैपिंग
वन-टू-वन मैपिंग एकल-मूल्यवान एसोसिएशन को एक और इकाई के लिए परिभाषित करता है जिसमें एक-से-एक गुणन होता है। यह संबंध मैपिंग संबंधित स्थिर संपत्ति या फ़ील्ड पर @OneToOne
एनोटेशन का उपयोग करता है।
उदाहरण: Vehicle
और ParkingPlace
।
एक-से-कई मानचित्रण
एक इकाई उदाहरण अन्य संस्थाओं के कई उदाहरणों से संबंधित हो सकता है।
एक-से-कई संबंध संगत संपत्ति या फ़ील्ड पर @OneToMany
एनोटेशन का उपयोग करते हैं।
mappedBy
तत्व को संबंधित इकाई में ManyToOne द्वारा एनोटेट किए गए विशेषता को संदर्भित करने की आवश्यकता है:
@OneToMany(mappedBy="attribute")
एक-से-कई एसोसिएशन को संस्थाओं के संग्रह को मैप करना होगा।
कई-से-एक मैपिंग
स्रोत इकाई (विशेषता जो लक्ष्य इकाई को संदर्भित करती है) में @ManyToOne
एनोटेशन के साथ विशेषता को एनोटेट करके कई-से-एक मैपिंग को परिभाषित किया जाता है।
एक @JoinColumn(name="FK_name")
एनोटेशन एक रिश्ते की एक महत्वपूर्ण कुंजी का वर्णन करता है।
कई-कई-कई मानचित्रण
इकाई उदाहरण एक दूसरे के कई उदाहरणों से संबंधित हो सकते हैं।
कई-से-कई संबंध संगत संपत्ति या फ़ील्ड पर @ManyToMany
एनोटेशन का उपयोग करते हैं।
हमें दो निकाय प्रकारों (ज्वाइन टेबल) को जोड़ने के लिए एक तीसरी तालिका का उपयोग करना चाहिए।
@JoinTable एनोटेशन उदाहरण
जब JPA में कई-से-कई रिश्तों की मैपिंग की जाती है, तो इसमें शामिल होने के लिए उपयोग की जाने वाली विदेशी-कुंजियों में शामिल होने वाली तालिका के लिए कॉन्फ़िगरेशन @JoinTable
एनोटेशन का उपयोग करके प्रदान किया जा सकता है:
@Entity
public class EntityA {
@Id
@Column(name="id")
private long id;
[...]
@ManyToMany
@JoinTable(name="table_join_A_B",
joinColumns=@JoinColumn(name="id_A"), referencedColumnName="id"
inverseJoinColumns=@JoinColumn(name="id_B", referencedColumnName="id"))
private List<EntityB> entitiesB;
[...]
}
@Entity
public class EntityB {
@Id
@Column(name="id")
private long id;
[...]
}
EntityA EntityB करने के लिए एक बहुत-से-अनेक संबंध, द्वारा एहसास होने के होते हैं जो इस उदाहरण में, entitiesB
क्षेत्र है, हम के लिए तालिका नाम में शामिल होने कि तालिका निर्दिष्ट करने के लिए @JoinTable एनोटेशन का उपयोग table_join_A_B
, कॉलम द्वारा रचित id_A
और id_B
, EntityA की तालिका में और EntityB की तालिका में कॉलम id
संदर्भित करने वाली विदेशी कुंजियाँ; (id_A,id_B)
table_join_A_B
तालिका के लिए एक प्राथमिक प्राथमिक-कुंजी table_join_A_B
।