2012-12-05 9 views
13

@ एंबेडेड एनोटेशन तकनीक और @OneToOne एनोटेशन तकनीक के बीच क्या अंतर है क्योंकि जावा क्लास में कक्षा में "हैस" संबंध है और @ एंबेडेड एनोटेशन हम जारी रखते हैं कि डेटाबेस में ऑब्जेक्ट है। और OneToOne रिश्ते में हम भी जारी रखते हैं कि डेटाबेस में ऑब्जेक्ट है।हाइबरनेट: @ एंबेडेड एनोटेशन तकनीक और @OneToOne एनोटेशन तकनीक के बीच अंतर

उत्तर

8

@OneToOne दो डीबी टेबल मैपिंग के लिए है जो एक से एक रिश्ते से संबंधित हैं। उदाहरण के लिए एक ग्राहक के नाम तालिका में हमेशा एक रिकॉर्ड हो सकता है।

वैकल्पिक रूप से यदि वे नाम फ़ील्ड ग्राहक तालिका (अलग तालिका में नहीं) पर हैं तो आप एक @embedded चाहते हैं। इसके चेहरे पर आप केवल ग्राहक फ़ील्ड में मानक विशेषताओं के रूप में नाम फ़ील्ड जोड़ सकते हैं लेकिन यह उपयोगी हो सकता है यदि वे कॉलम एकाधिक तालिकाओं पर दिखाई देते हैं (उदाहरण के लिए आपके पास प्रदायक तालिका पर नाम कॉलम हो सकते हैं)।

@Entity 
public class Project { 
    @EmbeddedId ProjectId id; 
    : 
} 

@Embeddable 
Class ProjectId { 
    int departmentId; 
    long projectId; 
} 

प्राथमिक कुंजी फ़ील्ड किसी एम्बेड कक्षा में परिभाषित कर रहे हैं:

7

संरचना और एकत्रीकरण के बीच इसका अंतर। @ एम्बेडेड ऑब्जेक्ट्स हमेशा अपने माता-पिता के जीवन चक्र में प्रबंधित होते हैं। यदि अभिभावक को अद्यतन या हटा दिया गया है, तो वे भी अपडेट या हटाए जाते हैं। @OneToOne ऑब्जेक्ट्स उनके @ जोइन एनोटेशन के कैस्केड टाइप विकल्प के माध्यम से नकली संरचना हो सकता है, लेकिन डिफ़ॉल्ट रूप से वे एकत्रित होते हैं, उर्फ ​​उनकी जीवन चक्र उनके मूल वस्तुओं से अलग होती है।

1

@Embedded किसी एम्बेड वर्ग के रूप में एक समग्र प्राथमिक कुंजी का प्रतिनिधित्व करने के लिए आम तौर पर है। इकाई में एक प्राथमिक कुंजी फ़ील्ड होता है जिसे @EmbeddedId के साथ एनोटेट किया गया है और इसमें उस एम्बेड करने योग्य वर्ग का एक उदाहरण शामिल है। इस फ़ॉर्म का उपयोग करते समय एक अलग आईडी वर्ग परिभाषित नहीं किया जाता है क्योंकि एम्बेड करने योग्य वर्ग स्वयं पूर्ण प्राथमिक कुंजी मानों का प्रतिनिधित्व कर सकता है।

@OneToOne दो डीबी टेबल मैपिंग के लिए है जो एक से एक रिश्ते से संबंधित हैं। @Id प्राथमिक कुंजी होगी।

2

@Embedded का उपयोग वैल्यू ऑब्जेक्ट्स (ऑब्जेक्ट्स के साथ किया जाता है जिसका अर्थ केवल ऑब्जेक्ट से जुड़ा हुआ होता है) जबकि एक से एक मैपिंग दो ऑब्जेक्ट्स के बीच होता है जिसका अपना अस्तित्व और अर्थ होता है।

उदा।

मूल्य वस्तु और @ एम्बेडेड: यदि हमारे पास उपयोगकर्ता वर्ग है और इस वर्ग में इसका कोई पता है, तो इसे एक वस्तु वस्तु के रूप में माना जा सकता है क्योंकि उपयोगकर्ता के साथ जुड़े होने तक अकेले पते का कोई महत्व नहीं है। यहां पता वस्तु को @Embedded के साथ एनोटेट किया जा सकता है।

एक से एक मैपिंग और @OneToOne: यदि हमारे पास उपयोगकर्ता वर्ग है और इस वर्ग में 'पिता' ऑब्जेक्ट या 'मदर' ऑब्जेक्ट है, तो हम 'पिता' या 'मदर' इंस्टेंस को @ वनटोन 'पिता' या 'मां' के रूप में अपना स्वयं का अर्थ और अस्तित्व है और उपयोगकर्ता वर्ग के लिए मूल्य वस्तुएं नहीं हैं।

@OneToMany और @ElementCollection के बीच एक करीबी से संबंधित अंतर है। दोनों जावा क्लास में संग्रह प्रकार के इंस्टेंस चर को सहेजने के लिए उपयोग किए जाते हैं। अंतर यह है कि, @ElementCollection का उपयोग तब किया जाना चाहिए जब संग्रह के तत्व सहेजे जा रहे हैं वे ऑब्जेक्ट ऑब्जेक्ट्स हैं जबकि @OneToMany का उपयोग तब किया जाता है जब elments और ऑब्जेक्ट को अच्छी तरह से परिभाषित अर्थ और अस्तित्व है।

संबंधित मुद्दे