ठीक है ये रहा,
मैं मान रहा हूँ कि आप स्प्रिंग बूट के साथ अपने आवेदन का निर्माण कर रहे हैं, अपने ORM के रूप में हाइबरनेट और शायद किसी प्रकार या संबंधपरक डेटाबेस (MySQL)।
डीबी डिजाइन के संबंध में:
हाँ यहाँ Patreon ऑब्जेक्ट आइटम इकाई के साथ OneToMany संबंध के साथ स्वामित्व वाली इकाई है (चूंकि एक Patreon में N ऑब्जेक्ट हो सकते हैं)। आपकी Patreon इकाई निम्नलिखित रीडिज़िंग के साथ कर सकती है:
1) गैर-आदिम प्रकारों का उपयोग करने का प्रयास करें विशेष रूप से टेबल कुंजियों के लिए (लंबी आईडी -> लंबी आईडी)।
2) checkOutItems के साथ-साथ ItemHistory सूची की सरणी खो दें। सबसे पहले संबंधों को संग्रह का उपयोग करके मॉडलिंग किया जाना चाहिए, न कि सरणी। दूसरी बात, आपको उन दोनों की जरूरत नहीं है। आप इस तरह से कभी भी checkOutItems और न ही itemHistory को स्टोर नहीं करेंगे। इसके बजाय List<Item> items
create बनाएं जो संबंध का वर्णन करते हुए पैट्रियन वस्तुओं को संग्रहीत करेगा (यहां कुछ उदाहरण हैं:http:/ /www.baeldung.com/hibernate-one-to-many
)
3) फिर से आइटम इकाई के साथ आपको इतिहास की सरणी खोने की जरूरत है। केवल एक चीज जिसकी आपको आवश्यकता है वह है स्वामित्व वाली इकाई (इस मामले में पैट्रियन) का संदर्भ, इस प्रकार संबंध के कई-एक पक्ष को पूरा करना।
4) ध्यान दें कि दिनांक फ़ील्ड को @Temporal
. के साथ एनोटेट किया जाना चाहिए सही प्रकार भी प्रदान करता है (आप और अधिक के लिए पढ़ सकते हैं)।
5) सामान्य रूप से आइटम वर्ग को एक नया स्वरूप देना चाहिए।
5) उपरोक्त सभी जगह पर होने के बाद और यह मानते हुए कि आप स्प्रिंग का उपयोग कर रहे हैं, आप एक रिपोजिटरी बना सकते हैं जिसके साथ आप एक पैट्रियन ऑब्जेक्ट को क्वेरी कर सकते हैं और इस तरह से संबंधित संस्थाओं (आइटम) के साथ एक ऑब्जेक्ट को पुनः प्राप्त कर सकते हैं।
आपके प्रश्नों के संबंध में:
Q1:हाँ यह देखा। अधिक के लिए ऊपर देखें।
Q1.2:कोई सरणियाँ नहीं हैं। सूचियाँ या बेहतर अभी तक सेट अधिक उपयुक्त हैं।
Q1.3:हाँ वहाँ है। पहला एक जेपीए एनोटेशन है जिसका उपयोग रिलेशनल डेटाबेस में किया जाता है जबकि दूसरा स्प्रिंग डेटा विशिष्ट एनोटेशन है जिसका उपयोग डेटाबेस और फ्रेमवर्क द्वारा किया जाता है जो इस प्रकार (रिलेशनल) के नहीं हैं या जिनके पास मानक दृढ़ता एपीआई परिभाषित नहीं है (जैसे जेपीए)। NonNull और NotNull के लिए मोटे तौर पर वही हैं जो वास्तव में बाद वाले को सुपरसेट कर रहे हैं (ऐसा कुछ जो अक्सर किया जाता है)। मुझे केवल लक्ष्य का अंतर दिखाई देता है। आप और अधिक यहाँ पढ़ सकते हैं:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/lang/NonNull.html https://docs.oracle.com/javaee /7/api/javax/validation/constraints/NotNull.html
Q2:हाँ वहाँ है। ऊपर देखें।
Q3:थोड़ी चतुराई के साथ मुझे और अधिक की आवश्यकता नहीं दिख रही है, लेकिन अगर आपको लगता है कि यह आपकी मदद करेगा, तो क्यों नहीं। बस thedesingn और इसकी जटिलता को खत्म न करें