2012-07-04 8 views
18

पर एसक्यूएल व्यू मैपिंग मेरे विकास प्रोजेक्ट में, मैं डेटाबेस एक्सेस के लिए जेपीए (हाइबरनेट) या मैपिंग तकनीक के रूप में उपयोग कर रहा हूं। जब कभी मैं डीबी टेबल को जटिल संबंधों के लिए सीधे संस्थाओं में मैप करता हूं तो मैंने प्रदर्शन मुद्दों और तकनीकी कठिनाइयों को मारा।जेपीए एंटिटी

मुझे लगता है कि जेपीए इकाइयों को डीबी दृश्य को मानचित्र बनाना एक कामकाज है। यह कोडिंग को आसान बनाता है और कभी-कभी प्रदर्शन बेहतर होता है। क्या आपको लगता है कि यह इस तरह से जेपीए का उपयोग करने का एक विरोधी पैटर्न है?

+0

नहीं, ऐसा नहीं है। यह क्यों होगा? –

+1

जो कुछ भी आपके लिए बेहतर काम करता है वह स्पष्ट रूप से "विरोधी पैटर्न" नहीं है। आप जानते हैं कि सबसे अच्छा क्या काम करता है आपके लिए टटर ... – DataNucleus

उत्तर

12

यह एक कामकाज नहीं है बल्कि विरोधी पैटर्न नहीं है।mapping JPA Entities to SQL Views पर एक विषय है। यह आपको पर्याप्त जानकारी देता है कि इस विधि का उपयोग करना है या नहीं।

व्यक्तिगत रूप से, मैं जावा कक्षाओं को प्राथमिकता देता हूं, और इस प्रकार मैं Result Classes Constructor Expression का उपयोग करता हूं। यह परिणाम क्वेरी रिटर्न के आधार पर प्रदान की गई कक्षा की वस्तुओं को तत्काल और पॉप्युलेट करता है।

आप इन दोनों विधियों को देख सकते हैं जो प्रदर्शन को बढ़ाते हैं और संरचना जटिलता को कम करते हैं।

+2

मैं परिणाम वर्ग के साथ परिणाम मैप करना भी पसंद करता हूं, लेकिन मुझे कस्टम इकाई दृष्टिकोण के बारे में कुछ संदेह हैं। कल्पना के मुताबिक, जेपीए इकाइयों में '@ आईडी' फ़ील्ड होना चाहिए; हालांकि, आप डुप्लिकेट रिकॉर्ड के साथ एक दृश्य देख सकते हैं। आप उस स्थिति को कैसे संभालेंगे? –

+0

एक अच्छा सवाल है।क्या आपको लगता है कि दृश्य के कई कॉलम से हैश कॉलम बनाना मदद करेगा? यह प्राथमिक कुंजी के रूप में कार्य कर सकता है। – JMelnik

+0

@JMelnik मैं भी जावा कक्षाओं के साथ हासिल करना पसंद करेंगे। मेरे पास कन्स्ट्रक्टर अभिव्यक्तियों के बारे में एक प्रश्न है और मेरा सवाल यह है कि यदि रचनाकार अभिव्यक्तियों का उपयोग किया जाता है, तो विशेषता द्वारा ऑर्डर कैसे किया जाता है? उदाहरण के लिए देखें [यह] (http://stackoverflow.com/questions/33852430/jpql-not-a-selected-expression-error) जहां मेरे पास एक जटिल क्वेरी है और मैं आदेश करने में असमर्थ हूं – user75ponic

0

मुझे लिंक जेएमएलनिक के साथ एक समस्या थी कृपया प्रदान की गई: मैंने जटिल क्वेरी को जावदब में एक दृश्य के रूप में बनाया, फिर दृश्य को देखने के लिए कोशिश की, लेकिन नेटबीन्स मुझे इसे छोड़ने की अनुमति नहीं दे रहा था (इसलिए मैं कर सकता था बाध्य तालिका autocreate नहीं मैं उस लिंक पर देखा मेरे अलावा कोई और यह अनुभव नहीं कर रहा हूँ

समाधान है कि मेरे लिए काम किया:।।

DB में दृश्य बनाएं, अपने जटिल एसक्यूएल के लिए शामिल

साथ संस्थाओं पैकेज में

"डेटाबेस से इकाई बनाएं", और इसे xxxViewName नाम दें

  • सुनिश्चित करें कि इकाई में एक फ़ील्ड को "@Id" जोड़कर कुंजी के रूप में पहचाना जाता है।

जावा हठ क्वेरी बनाएं नेविगेटर में:

  • सुनिश्चित प्रपत्र डिजाइन दिखाई दे रहा है, तो सही क्लिक नेविगेटर में "अन्य घटक", और चुनें पैलेट से जोड़ें> जावा हठ> क्वेरी

  • क्वेरी कॉन्फ़िगर करें: सामान्य "शो xxxViewName" का उपयोग न करें (जो विफल रहता है क्योंकि जेपीए शो का समर्थन नहीं करता है)। उपयोग करें डब्ल्यू xxxViewName से

जावा नेविगेटर में दृढ़ता परिणाम सूची बनाएं डब्ल्यू ":

क्वेरी बनाने के लिए
  • इसी प्रकार के

बाइंड सूची के प्रकार पैरामीटर सेट करने के लिए सुनिश्चित करें। सूची में आपका JTable।

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