2011-12-01 19 views
7

तो मैं Heroku पर अपने जावा अनुप्रयोग को तैनात करना चाहते हैं के साथ हाइबरनेट कॉन्फ़िगर कर सकते हैं। एक बार तैनात किए जाने पर यह एक पर्यावरण चर DATABASE_URL सेट करता है। मैं इसे हाइबरनेट के लिए अपने यूआरएल के रूप में उपयोग करना चाहता हूं। मैं वर्तमान में hibernate.cfg.xml है और वहाँ मैं यूआरएल JDBC सेट: PostgreSQL: // स्थानीय होस्ट: पोर्ट/इस तरह db। मैं इसे DATABASE_URL लेने के लिए कैसे बदल सकता हूं?मैं कैसे वातावरण चर

उत्तर

10

तरीकों में से एक Configuration की setProperty(String propertyName, String value) उपयोग करने के लिए स्पष्ट रूप से SessionFactory बनाने से पहले hibernate.connection.url के मान को ओवरराइड करने के लिए है।

वातावरण चर पाने के लिए आपको System.getenv(String name) उपयोग कर सकते हैं।

/**Load the hibernate.cfg.xml from the classpath**/ 
Configuration cfg = new Configuration(); 
cfg.setProperty("hibernate.connection.url", System.getenv("DATABASE_URL")); 
SessionFactory sessionFactory = cfg.buildSessionFactory(); 
+0

बहुत बहुत हालांकि कुछ मिनट पहले यह पता लगा धन्यवाद। :) –

+0

कृपया मुझे बताएं कि यह ठीक है या नहीं। शुभकामनाएं :) –

+2

आपको System.getenv ("DATABASE_URL") से लौटाई गई स्ट्रिंग को ट्विक करने की आवश्यकता हो सकती है। –

1

मई इस मदद आप,

मैं JBoss के HSQL डीबी उपयोग कर रहा हूँ 5.x के रूप में और गतिशील तालिकाएं बनाने के लिए हाइबरनेट और * .cfg.xml फ़ाइल निम्न का उपयोग कर।

जो वातावरण चर के रूप में $ JBOSS_HOME उपयोग कर रहा है

<?xml version="1.0" encoding="UTF-8"?> 

<session-factory> 

      <!-- Database connection settings --> 

      <property name="connection.driver_class">org.hsqldb.jdbcDriver</property> 
      <property name="connection.url">jdbc:hsqldb:$JBOSS_HOME/server/test/data/hypersonic/localDB</property> 
      <property name="connection.username">sa</property> 

      <property name="connection.password"></property> 

      <!-- JDBC connection pool (use the built-in) --> 
      <property name="connection.pool_size">1</property> 

      <!-- SQL dialect --> 
      <property name="dialect">org.hibernate.dialect.HSQLDialect</property> 

      <!-- Enable Hibernate's automatic session context management --> 
      <property name="current_session_context_class">thread</property> 

      <!-- Disable the second-level cache --> 
      <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> 

      <!-- Echo all executed SQL to stdout --> 
      <property name="show_sql">true</property> 
      <!-- Drop and re-create the database schema on startup --> 

      <property name="hbm2ddl.auto">update</property> 
      <!-- Mapping files --> 
      <mapping resource="friends_presence_log.hbm.xml" /> 
      <mapping resource="profileuuid.hbm.xml" /> 
    </session-factory> 

तो, इसका मतलब है आप Jboss config में वातावरण चर का उपयोग करने के तो अपने सामान्य रूप से उपयोग कर सकते हैं, जो बाद में आंतरिक hibernate.jar उपयोगिता द्वारा उठाए चाहते हैं और आप जावा प्रोग्राम में सामान्य रूप से कनेक्शन या चीजें प्राप्त करते हैं।

4

मैंने जावा में किसी भी प्रोग्रामिंग के बिना किसी अन्य समाधान के लिए बहुत कुछ खोजा। मैं निष्कर्ष

निम्नलिखित
<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
            "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
<session-factory> 
    <property name="hibernate.check_nullability">false</property> 
    <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property> 
    <property name="hibernate.connection.driver_class">org.postgresql.Driver</property> 
    <property name="hibernate.connection.username">${hibernate_username}</property> 
    <property name="hibernate.connection.password">${hibernate_password}</property> 
    <property name="hibernate.connection.url">jdbc:postgresql://${hibernate_db_host}/${hibernate_db_name}</property> 
    <property name="hibernate.search.autoregister_listeners">false</property> 
    <property name="hibernate.hbm2ddl.auto">update</property> 
    <property name="hibernate.show_sql">${hibernate_show_sql}</property> 
</session-factory> 
</hibernate-configuration> 

के लिए आया था और मैं निम्नलिखित vmargs साथ अपने आवेदन शुरू:

-Dhibernate_username=test-Dhibernate_password=testpassword -Dhibernate_db_host=localhost -Dhibernate_db_name=test -Dhibernate_show_sql=true 

मैं इस पुराने पोस्ट के लिए इस समाधान पोस्ट, क्योंकि मैं एक पुराने मंच पोस्ट में इस पाया (Google खोज साइड 3+ ^^)। और मुझे लगता है कि यह बहुत उपयोगी है।

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