आज हमारा काम हाइबरनेट विषय पर दूसरी परियोजना को पूरा करना है। इसका सार डेटाबेस की संरचना को समझना है, इकाई को मौजूदा तालिकाओं में मैप करना है, और यह जांचने के लिए न्यूनतम कार्यक्षमता जोड़ना है कि मैपिंग सही तरीके से की गई है।

अब और विस्तार से:

  1. डंप फ़ाइल डाउनलोड करें और इसे अपने स्थानीय मशीन पर तैनात करें। एक डेटाबेस के रूप में, हम एक परीक्षण डेटाबेस का उपयोग करेंगे, जिसे MySQL इंस्टॉलेशन पैकेज के साथ एक उदाहरण के रूप में वितरित किया गया है। डेटाबेस की स्थिति को ठीक करने के लिए डंप की आवश्यकता होती है, क्योंकि हम गारंटी नहीं दे सकते कि यह एक दिन, महीने, वर्ष में नहीं बदलेगा।
  2. हमारे पास प्रोजेक्ट टेम्प्लेट नहीं होगा, इसलिए प्रोजेक्ट स्वयं बनाएं। यह सभी आवश्यक निर्भरताओं के साथ एक मेवेन प्रोजेक्ट होना चाहिए ( hibernate-core-jakarta , mysql-connector-java , p6spy )।
  3. हमारे स्थानीय परिनियोजित डेटाबेस को आइडिया में डेटा स्रोत के रूप में प्लग इन करें। उसके बाद, डेटाबेस टैब में, कर्सर को मूवी स्कीमा पर रखें और कुंजी संयोजन दबाएं Alt+Ctrl+Shift+U(केवल अंतिम संस्करण में काम करता है)। यह संपूर्ण मूवी स्कीमा (कॉलम नाम, कुंजी, आदि के साथ) की संरचना दिखाएगा। इस तरह दिखता है:

    मैं सहमत हूं, यह देखना बहुत सहज नहीं है। सभी स्तंभों और टिप्पणियों के शीर्षक का प्रदर्शन बंद करें:

    नतीजतन, आपको एक डेटाबेस स्कीमा मिलेगा जिसका पहले से ही विश्लेषण किया जा सकता है:

  4. सर्किट जटिल दिखता है, लेकिन सब कुछ इतना बुरा नहीं है। डेटाबेस की संरचना का विश्लेषण करने के लिए, आपको यह पता लगाना होगा कि कहां से शुरू करना है। कोई एक सही उत्तर नहीं है, लेकिन मैं एक तालिका से शुरू करने की सलाह दूंगा film। उदाहरण के तौर पर कुछ रिश्तों को लेते हैं:
    • filmतालिकाओं और के बीच संबंध film_textएक स्पष्ट OneToOne संबंध है , क्योंकि तालिका film_textमें एक फ़ील्ड है film_idजोनहींतालिका से एक आईडी को संदर्भित करता है film(कोई विदेशी कुंजी नहीं)। लेकिन नाम और तर्क से ये कनेक्शन होना चाहिए। इसके अलावा, तालिका में, film_textफ़ील्ड film_idप्राथमिक कुंजी के रूप में कार्य करता है, जो गारंटी देता है कि एक "मूवी" एक से अधिक "फ़िल्म टेक्स्ट" से मेल नहीं खाती है।
    • आइए अब टेबल filmऔर देखें category। तार्किक रूप से, एक फिल्म में कई श्रेणियां हो सकती हैं। और एक श्रेणी, शायद अलग-अलग फिल्में। इसके अलावा, इन दो तालिकाओं के बीच एक इंटरमीडिएट लिंक टेबल है film_category। उपरोक्त सभी के आधार पर, यह एक स्पष्ट मैनीटूमैनी संबंध है ।
    • हम टेबल filmऔर देखते हैं language। तर्क की दृष्टि से फिल्म का अनुवाद अलग-अलग भाषाओं में हो सकता है और अलग-अलग फिल्में एक ही भाषा में हो सकती हैं। यानी, ManyToMany खुद सुझाव देता है । लेकिन अगर हम तालिका की सामग्री को देखें film, तो हम देख सकते हैं कि तालिका की प्रत्येक पंक्ति एक अनूठी फिल्म है। और लाइन में केवल एक भाषा_आईडी फ़ील्ड है (मूल_भाषा_आईडी भी है, लेकिन सभी रिकॉर्डों में यह शून्य है, इसलिए हम इसे अनदेखा कर सकते हैं)। यानी एक फिल्म में एक ही भाषा हो सकती है। और एक भाषा, शायद अलग-अलग फिल्में। कनेक्शन बहुत से है (कनेक्शन फिल्म से भाषा तक निर्देशित है)।
  5. अब मुख्य कार्य सभी आवश्यक इकाई वर्गों को बनाना और उन्हें स्कीमा टेबल पर मैप करना है movie
  6. एक ऐसी विधि जोड़ें जो सभी आश्रित क्षेत्रों के साथ एक नया ग्राहक (ग्राहक तालिका) बना सके। विधि को लेन-देन करना न भूलें (ताकि ऐसी स्थिति में न आएं कि खरीदार का पता डेटाबेस में दर्ज हो, लेकिन खरीदार स्वयं नहीं है)।
  7. एक लेन-देन विधि जोड़ें जो "ग्राहक गया और पहले से किराए पर ली गई मूवी लौटा दी" घटना का वर्णन करता है। अपनी पसंद का कोई भी खरीदार और रेंटल इवेंट चुनें। फिल्म की रेटिंग को पुनर्गणना करने की आवश्यकता नहीं है।
  8. एक लेन-देन विधि जोड़ें जो घटना का वर्णन करती है "खरीदार स्टोर (स्टोर) और किराए पर (किराए पर) इन्वेंट्री (इन्वेंट्री) गया था। उसी समय, उसने विक्रेता (कर्मचारियों) को भुगतान (भुगतान) किया। फिल्म (सूची के माध्यम से) अपने विवेकानुसार चुनें। एकमात्र प्रतिबंध यह है कि फिल्म किराए पर उपलब्ध होनी चाहिए। यानी या तो रेंटल में कोई इन्वेंट्री रिकॉर्ड नहीं होना चाहिए, या इस इन्वेंट्री के आखिरी रेंटल के लिए टेबल का रिटर्न_डेट कॉलम भरना चाहिए।rental
  9. एक लेन-देन विधि जोड़ें जो घटना का वर्णन करती है "एक नई फिल्म की शूटिंग हुई और यह किराए के लिए उपलब्ध हो गई।" फिल्म, भाषा, अभिनेता, श्रेणियां आदि अपने विवेक से चुनें।
  10. तालिका संरचना को बदला नहीं जा सकता। लेकिन आपको सुधार के लिए सुझाव देने की जरूरत है। हमने पैराग्राफ 4 में एक समस्याग्रस्त स्थान की पहचान की है ( तालिका क्षेत्र में तालिका में विदेशी कुंजी की अनुपस्थिति )। देखें कि क्या डेटाबेस संरचना में अभी भी ऐसी "गलतियाँ" हैं। यदि ऐसा है, तो प्रोजेक्ट के रूट में एक रीडमी फ़ाइल जोड़ें और इन भूलों का वर्णन करें।film_textfilm_idfilm

परियोजना विश्लेषण: