आप मानचित्र की आपूर्ति करके एक स्थिरता इकाई में गुण अपडेट कर सकते हैं (this देखें)।
सुविधाजनक रूप से, पर्यावरण चर को मानचित्र के रूप में पुनर्प्राप्त किया जा सकता है (this देखें)।
दोनों को एक साथ रखें और आप गतिशील रूप से पर्यावरण चर के साथ अपनी दृढ़ता इकाई में गुणों को अपडेट कर सकते हैं।
संपादित करें: सरल उदाहरण ...
persistence.xml ...
<persistence-unit name="default" transaction-type="RESOURCE_LOCAL">
<provider>
oracle.toplink.essentials.PersistenceProvider
</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="toplink.logging.level" value="INFO"/>
<property name="toplink.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
<property name="toplink.jdbc.url" value="jdbc:oracle:thin:@myhost:l521:MYSID"/>
<property name="toplink.jdbc.password" value="tiger"/>
<property name="toplink.jdbc.user" value="scott"/>
</properties>
</persistence-unit>
कोड है कि अद्यतन वातावरण चर के साथ persistence.xml "डिफ़ॉल्ट" इकाई ...
Map<String, String> env = System.getenv();
Map<String, Object> configOverrides = new HashMap<String, Object>();
for (String envName : env.keySet()) {
if (envName.contains("DB_USER")) {
configOverrides.put("toplink.jdbc.user", env.get(envName)));
}
// You can put more code in here to populate configOverrides...
}
EntityManagerFactory emf =
Persistence.createEntityManagerFactory("default", configOverrides);
स्रोत
2012-01-12 17:50:50
होस्टनाम जैसे डेटाबेस विवरण को आपके persistence.xml में परिभाषित नहीं किया जाना चाहिए। जेएनडीआई लुकअप का प्रयोग करें और अपने एप्लिकेशन सर्वर में कंक्रीट डेटाबेस पैरामीटर को परिभाषित करें ... – home
हाय, यह उल्लेख करने के लिए खेद है कि मैं यहां किसी भी एप्लिकेशन सर्वर का उपयोग नहीं कर रहा हूं, मैं स्टैंडअलोन एप्लिकेशन चला रहा हूं इसलिए मुझे persistence.xml फ़ाइल में हार्ड कोड डेटाबेस विवरण की आवश्यकता है । – Ran
क्या आप पर्यावरण चर से या persistence.xml से डेटाबेस विवरण प्राप्त करना चाहते हैं? ऐसा लगता है कि आप कह रहे हैं कि आप उन्हें दोनों से प्राप्त करना चाहते हैं लेकिन यह पूरी तरह स्पष्ट नहीं है ... –