2012-06-07 13 views
13

जेपीए में नामित प्रश्न बनाते समय, इन प्रश्नों के नामों के लिए एक स्वीकार्य सर्वोत्तम अभ्यास है (उदाहरण के लिए EntityName.allActive या findAllActiveFoos इत्यादि) और यह भी उन वर्गों में इन नामांकित प्रश्नों को घोषित करना अच्छा है वे एक उपयोगिता वर्ग में पूछताछ या सभी एक साथ?NamedQuery: सर्वोत्तम प्रथाओं

+1

संबंधित उत्तर: http://stackoverflow.com/a/4948333/1725096 –

उत्तर

10

नहीं, वहाँ कोई व्यापक रूप से स्वीकार सबसे अच्छा अभ्यास है कि किसी भी जटिल मामलों को शामिल किया गया है। सामान्य रूप से जेपीए के लिए बहुत अधिक स्टाइल गाइड उपलब्ध नहीं हैं। आमतौर पर क्या माना जाता है, और आम तौर पर किताबों में भी प्रयोग किया जाता है, इकाई के नाम से क्वेरी शुरू करना है।

मैं EntityName के लिए जाना होगा संचालन और तर्क के साथ संयुक्त (हठ इकाई में अद्वितीय नामों की गारंटी करने के)।

  • Person.findByAge
  • Person.findByAgeAndFirstName
  • Person.removeByFirstName
  • Person.updateSalaryIfYearBornBefore
बस एक नोट के रूप

, विनिर्देश with बजाय उदाहरण में by का उपयोग करता है, और नहीं है इकाई के नाम के साथ उपसर्ग क्वेरी। लेकिन यह निश्चित रूप से विनिर्देश है, स्टाइल गाइड नहीं।

मैं इसे अच्छा इन क्वेरी नाम के लिए स्थिरांक की घोषणा और फिर दोनों @ NamedQuery.name और em.createNamedQuery में इन स्थिरांक उपयोग करने के लिए लगता है।

@NamedQuery, @NamedNativeQuery, और @NamedQueries केवल मैप की सुपर क्लास या संस्था के लिए लागू किया जा सकता है, तो आप उन्हें उपयोगिता वर्ग के लिए पता नहीं लगा सकते।

+2

मेरा मानना ​​है कि 'Entity.camelCaseWhatItDoesName' काफी सर्वोत्तम अभ्यास के रूप में योग्यता प्राप्त करता है। पिछली परियोजनाओं में, कई ग्राहकों ने इस शैली को अपनाया है। – Kawu

4

हालांकि वैश्विक स्तर पर स्वीकार्य सर्वोत्तम अभ्यास प्रतीत नहीं होता है, लेकिन माइक कीथ और मेरिक शिनकारी द्वारा पुस्तक "प्रो जेपीए 2" पुस्तक ठीक से सिफारिश करती है कि मिक्को ने क्या कहा, उदाहरण के लिए यदि आपके पास सभी कर्मचारियों को खोजने के लिए कोई प्रश्न है तो उसे "कर्मचारी.विंडअल" कहें।

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

+0

एक तरफ के रूप में, नामित प्रश्नों के लिए अत्यधिक अनुशंसा की जाने वाली एक सर्वोत्तम प्रथा है, पैरामीटर पैरामीटर के विपरीत नामित पैरामीटर का उपयोग करना। इससे प्रश्नों के साथ काम करना बहुत आसान हो जाता है। – brent777

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