मैं ऐसे उत्पाद पर काम कर रहा हूं जो एकाधिक डेटाबेस इंजन (ओरेकल, एमएसएसक्यूएल, माईएसक्यूएल) का समर्थन करेगा। ओरेकल के लिए, मैं एक उच्च मात्रा की स्थापना पर संभावित समवर्तीता और लॉकिंग मुद्दों से बचने के लिए अनुक्रम तालिका के बजाय अनुक्रमों का उपयोग करना पसंद करूंगा, लेकिन अन्य डेटाबेस इंजन अनुक्रमों का समर्थन नहीं करते हैं। इसके अलावा, मैं वैश्विक अनुक्रम (जैसे hibernate_sequence
) की बजाय प्रति तालिका एक अनुक्रम का उपयोग करना पसंद करूंगा, इसलिए @GeneratedValue(strategy = GenerationType.AUTO)
काम नहीं करेगा। रनटाइम पर रणनीति को गतिशील रूप से चुनने का कोई तरीका है?क्या जेपीए एनोटेशन और हाइबरनेट का उपयोग करके @GeneratedValue रणनीति को गतिशील रूप से चुनने का कोई तरीका है?
उत्तर
दरअसल, हाइबरनेट GenerationType.AUTO
और GenerationType.SEQUENCE
दोनों को org.hibernate.id.enhanced.SequenceStyleGenerator
का उपयोग करके व्याख्या करता है। अनुक्रम स्टाइल जेनरेटर एक आईडी पीढ़ी की रणनीति है जो अंतर्निहित डेटाबेस का समर्थन करने के आधार पर दो रणनीतियों में से एक चुनती है। यदि डेटाबेस अनुक्रमों का समर्थन करता है, तो अनुक्रम स्टाइल जेनरेटर अनुक्रमों का उपयोग करता है; यदि ऐसा नहीं होता है, तो अनुक्रम स्टाइल जेनरेटर "अनुक्रम तालिका" का उपयोग करने के लिए वापस आ जाता है। उपयोग करने के लिए जेनरेटर का यह "मानचित्रण" एक सेटिंग द्वारा नियंत्रित होता है: hibernate.id.new_generator_mappings
। इसे सही करने के लिए सेट करना मैंने अभी वर्णित व्यवहार को सक्षम किया है। दुर्भाग्यवश, पीछे की संगतता कारणों के लिए, हमें इसे गलत करने के लिए डिफ़ॉल्ट करना पड़ा। तो इसका लाभ उठाने के लिए, आपको यह सुनिश्चित करना होगा कि सेटिंग सही पर सेट हो।
आगे, आप किसी भी नाम दिए जाने पर वैश्विक अनुक्रम या अनुक्रम प्रति इकाई को प्राथमिकता देने के लिए अनुक्रम स्टाइल जेनरेटर को कॉन्फ़िगर कर सकते हैं। इसे prefer_sequence_per_entity
अनुक्रम स्टाइल जेनरेटर सामान्य रूप से काफी कॉन्फ़िगर करने योग्य सेटिंग द्वारा नियंत्रित किया जाता है। अधिक जानकारी के लिए अपने javadocs पर एक नज़र डालें: http://docs.jboss.org/hibernate/orm/4.1/javadocs/index.html?org/hibernate/id/enhanced/SequenceStyleGenerator.html
- 1. हाइबरनेट/जेपीए एनोटेशन का उपयोग करके जनरेशन टाइप रणनीति को मैं ओवरराइड कैसे करूं?
- 2. एनोटेशन का उपयोग करके या हाइबरनेट कॉन्फ़िगरेशन फ़ाइलों का उपयोग करके हाइबरनेट
- 3. हाइबरनेट एनम मैपिंग एनोटेशन का उपयोग करके
- 4. जेपीए कैस्केड एनोटेशन और हाइबरनेट कैस्केड एनोटेशन
- 5. गतिशील रूप से एक NamedQuery सॉर्टिंग? सीम/हाइबरनेट/जेपीए
- 6. कैसे हाइबरनेट/जेपीए एनोटेशन
- 7. जेपीए + हाइबरनेट + @ ट्रांज़ेक्शनल एनोटेशन
- 8. जेपीए दृढ़ता गुणों को गतिशील रूप से
- 9. हाइबरनेट और जेपीए कैस्केड प्रकारों का उपयोग कब करें और
- 10. एनोटेशन के माध्यम से हाइबरनेट UUIDGenerator का उपयोग
- 11. जेपीए एक @GeneratedValue @Id
- 12. क्या जावा का उपयोग करके प्रोग्रामेटिक रूप से जीमेल पासवर्ड बदलने का कोई तरीका है?
- 13. मैं जेपीए का उपयोग करके एकाधिक डेटाबेस से कैसे जुड़ूं?
- 14. क्या हाइबरनेट/जेपीए में कॉलम नामों को गतिशील रूप से परिभाषित करना संभव है?
- 15. जेपीए (+ हाइबरनेट)
- 16. बाईपास GeneratedValue हाइबरनेट में
- 17. @PreUpdate और हाइबरनेट में @Prepersist/जेपीए (सत्र का उपयोग)
- 18. जेपीए एनोटेशन
- 19. जेपीए का कैस्केड = रिमूव और हाइबरनेट का @ ओनडेलेट एक साथ उपयोग किया जाता है?
- 20. हाइबरनेट मानदंडों का उपयोग करना, क्या विशेष पात्रों से बचने का कोई तरीका है?
- 21. जेपीए सत्यापन रणनीति
- 22. क्या हाइबरनेट को बाध्य चर के बजाए शाब्दिक मानों का उपयोग करने का कोई तरीका है?
- 23. क्या फॉग और कैरियरवेव का उपयोग करके फ़ाइल ऑब्जेक्ट को पढ़ने का कोई तरीका है?
- 24. जेपीए और हाइबरनेट का उपयोग कर JSON स्ट्रिंग को स्वचालित रूप से क्रमबद्ध और deserialize कैसे करें?
- 25. गतिशील रूप से छवि थंबनेल बनाएं (django का उपयोग करके)
- 26. जावास्क्रिप्ट का उपयोग करके गतिशील रूप से फॉर्म तत्व जोड़ें -
- 27. क्या बूस्ट में compress_matrix को गतिशील रूप से बदलने का कोई प्रभावी तरीका है?
- 28. क्या हाइबरनेट को @Where एनोटेशन में बूलियन अक्षरों को दूषित करने से रोकने का कोई तरीका है?
- 29. हाइबरनेट/जेपीए/टॉपलिंक का उपयोग कब करें?
- 30. हाइबरनेट जेनरेटेड वैल्यू रणनीति
यह कॉन्फ़िगर करने योग्य कैसे है, मुझे अभी तक एक उदाहरण नहीं मिला है कि SequenceStyleGenerator के increment_size को कैसे बदला जाए? कॉन्फ़िगर करने के लिए पारित पैराम cfg.xml में सेट गुणों का सीमित सेट हैं। अनुकूलक और increment_size मेरे प्रयासों में से सर्वश्रेष्ठ को पारित नहीं किया जाता है। –
'@ सिकेंस जेनरेटर (..., आवंटन आकार = ब्लाह)' –
सुझाव के लिए धन्यवाद। लेकिन यह एक शॉर्टकट की तरह लगता है, क्योंकि अनुक्रम जेनरेटर में अनुक्रमित स्टाइल जेनरेटर में उल्लिखित कॉन्फ़िगरेशन के समान गुण नहीं हैं। मैंने कोशिश की और यह पूल किए गए ऑप्टिमाइज़र के साथ काम किया और यह मुझे प्रदर्शन की बढ़त प्रदान कर रहा था। लेकिन बंद होने के लिए। क्या cfg.xml फ़ाइल में ऐसा करने का कोई तरीका है। SequenceStyleGenerator.java पर "ऑप्टिमाइज़र" और "increment_size" को हाइबरनेट द्वारा पढ़ा नहीं गया था जब मैं इसे डिबग कर रहा था। http://stackoverflow.com/questions/19694154/hibernate-cfg-xml-configuration-for-sequence- जनरेटर –