क्या EntityManager
एक दृढ़ता इकाई को परिभाषित किए बिना आरंभ करने का एक तरीका है ?
आपको परिनियोजन वर्णनकर्ता में कम से कम एक दृढ़ता इकाई को परिभाषित करना चाहिए persistence.xml
।
आप एक बनाने के लिए सभी आवश्यक गुण दे सकते हैं Entitymanager
?
- नाम विशेषता की आवश्यकता है। अन्य विशेषताएँ और तत्व वैकल्पिक हैं। (जेपीए विनिर्देश)। तो यह कम से कम आपकी न्यूनतम
persistence.xml
फ़ाइल होनी चाहिए :
<persistence>
<persistence-unit name="[REQUIRED_PERSISTENCE_UNIT_NAME_GOES_HERE]">
SOME_PROPERTIES
</persistence-unit>
</persistence>
जावा ईई वातावरण में, jta-data-source
और non-jta-data-source
तत्वों का उपयोग JTA के वैश्विक JNDI नाम और / या गैर-JTA डेटा स्रोत को दृढ़ता प्रदाता द्वारा उपयोग किए जाने के लिए निर्दिष्ट करने के लिए किया जाता है।
इसलिए यदि आपका लक्ष्य एप्लिकेशन सर्वर JTA (JBoss, Websphere, GlassFish) का समर्थन करता है, तो आपका persistence.xml
ऐसा दिखता है:
<persistence>
<persistence-unit name="[REQUIRED_PERSISTENCE_UNIT_NAME_GOES_HERE]">
<jta-data-source>jdbc/myDS</jta-data-source>
</persistence-unit>
</persistence>
यदि आपका लक्ष्य एप्लिकेशन सर्वर JTA (Tomcat) का समर्थन नहीं करता है, तो आपका persistence.xml
ऐसा दिखता है:
<persistence>
<persistence-unit name="[REQUIRED_PERSISTENCE_UNIT_NAME_GOES_HERE]">
<non-jta-data-source>jdbc/myDS</non-jta-data-source>
</persistence-unit>
</persistence>
यदि आपका डेटा स्रोत किसी वैश्विक JNDI (उदाहरण के लिए, जावा EE कंटेनर के बाहर) के लिए बाध्य नहीं है, तो आप आमतौर पर JPA प्रदाता, ड्राइवर, url, उपयोगकर्ता और पासवर्ड गुणों को परिभाषित करेंगे। लेकिन संपत्ति का नाम जेपीए प्रदाता पर निर्भर करता है। तो, JPA प्रदाता के रूप में हाइबरनेट के लिए, आपकी persistence.xml
फ़ाइल निम्न प्रकार दिखाई देगी:
<persistence>
<persistence-unit name="[REQUIRED_PERSISTENCE_UNIT_NAME_GOES_HERE]">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>br.com.persistence.SomeClass</class>
<properties>
<property name="hibernate.connection.driver_class" value="org.apache.derby.jdbc.ClientDriver"/>
<property name="hibernate.connection.url" value="jdbc:derby://localhost:1527/EmpServDB;create=true"/>
<property name="hibernate.connection.username" value="APP"/>
<property name="hibernate.connection.password" value="APP"/>
</properties>
</persistence-unit>
</persistence>
लेन-देन प्रकार विशेषता
सामान्य तौर पर, जावा ईई वातावरण में, एक लेनदेन-प्रकार RESOURCE_LOCAL
मानता है कि एक गैर-जेटीए डेटा स्रोत प्रदान किया जाएगा। एक जावा ईई वातावरण में, यदि यह तत्व निर्दिष्ट नहीं है, तो डिफ़ॉल्ट JTA है। एक जावा एसई वातावरण में, यदि यह तत्व निर्दिष्ट नहीं है, तो डिफ़ॉल्ट को RESOURCE_LOCAL
ग्रहण किया जा सकता है।
- जावा एसई एप्लिकेशन की पोर्टेबिलिटी का बीमा करने के लिए, दृढ़ता से प्रबंधित इकाई (जेपीए विनिर्देश) में शामिल किए गए प्रबंधित वर्गों को स्पष्ट रूप से सूचीबद्ध करना आवश्यक है।
मुझे EntityManager
रनटाइम पर उपयोगकर्ता के निर्दिष्ट मूल्यों से बनाने की आवश्यकता है
तो इस का उपयोग करें:
Map addedOrOverridenProperties = new HashMap();
addedOrOverridenProperties.put("hibernate.show_sql", true);
Persistence.createEntityManagerFactory(<PERSISTENCE_UNIT_NAME_GOES_HERE>, addedOrOverridenProperties);