Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

प्राथमिक कुंजी के लिए Oracle के SYS_GUID () का उपयोग करने के लिए हाइबरनेट को कॉन्फ़िगर करें

आप "गाइड" जनरेटर का उपयोग करने में सक्षम हो सकते हैं। इस पोस्ट को हाइबरनेट फोरम से देखें। ऐसा लगता है कि उन्होंने SYS_GUID() . का उपयोग करके Oracle के लिए समर्थन जोड़ा है कुछ समय पहले, लेकिन दस्तावेज़ीकरण अभी भी कहता है कि वे केवल SQL सर्वर और MySQL का समर्थन करते हैं।

मैंने अभी तक जेपीए एनोटेशन के साथ काम नहीं किया है, लेकिन यहां एक्सएमएल कॉन्फ़िगरेशन का उपयोग करके एक उदाहरण दिया गया है:

<id name="PRODUCT_ID">
  <generator class="guid" />
</id>

संपादित करें: आपके दूसरे प्रश्न के संबंध में, मुझे लगता है कि आप पूछ रहे हैं कि हाइबरनेट ऐसा कुछ क्यों नहीं कर सकता:

INSERT INTO PRODUCT (PRODUCT_ID, /* etc */)
SELECT SYSGUID(), /* etc */

कारण यह है कि हाइबरनेट को पता होना चाहिए कि वस्तु की आईडी क्या है। उदाहरण के लिए, निम्नलिखित परिदृश्य पर विचार करें:

  1. आप एक नई उत्पाद वस्तु बनाते हैं और उसे सहेजते हैं। Oracle आईडी असाइन करता है।
  2. आप उत्पाद को हाइबरनेट सत्र से अलग करते हैं।
  3. आप बाद में इसे फिर से संलग्न करते हैं और कुछ परिवर्तन करते हैं।
  4. अब आप उन परिवर्तनों को जारी रखना चाहते हैं।

आईडी जाने बिना, हाइबरनेट ऐसा नहीं कर सकता। अद्यतन विवरण जारी करने के लिए इसे आईडी की आवश्यकता है। तो org.hibernate.id.GUIDGenerator . का कार्यान्वयन पहले आईडी जनरेट करनी होती है, और फिर बाद में इसे INSERT स्टेटमेंट में फिर से इस्तेमाल करना होता है।

यही कारण है कि हाइबरनेट कोई बैचिंग नहीं कर सकता है यदि आप डेटाबेस-जनरेटेड आईडी (इसका समर्थन करने वाले डेटाबेस पर ऑटो-इन्क्रीमेंट सहित) का उपयोग करते हैं। हिलो जेनरेटर में से किसी एक का उपयोग करना, या कुछ अन्य हाइबरनेट-जेनरेटेड आईडी तंत्र का उपयोग करना, एक ही बार में बहुत सारी वस्तुओं को सम्मिलित करते समय अच्छा प्रदर्शन प्राप्त करने का एकमात्र तरीका है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. AWS EC2 से AWS RDS में Oracle डेटाबेस माइग्रेट करना, भाग 3

  2. सीबीओ सांख्यिकी श्वेत पत्र

  3. बड़े सीएलओबी के साथ सी # से संग्रहित प्रक्रिया को कॉल करने में समस्याएं

  4. Oracle क्लाउड प्लेटफ़ॉर्म पर Oracle डेटाबेस 12c के साथ Oracle JDeveloper 12c का उपयोग करना, भाग 2

  5. Oracle में बिना समय के केवल दिनांक प्राप्त करें