所以我想部署我的Java應用程序在heroku上。一旦部署,它設置一個環境變量DATABASE_URL。我想用它作爲我的hibernate網址。我目前有hibernate.cfg.xml,並在那裏設置URL jdbc:postgresql:// localhost:port/db像這樣。我如何將其更改爲DATABASE_URL?如何配置Hibernate的環境變量
7
A
回答
10
其中一種方法是在創建SessionFactory之前使用setProperty(String propertyName, String value)的Configuration明確覆蓋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();
1
願這幫助你,
我使用JBoss的HSQL DB AS 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的配置,然後你就可以正常使用,後來採取內部hibernate.jar工具你可以像在java程序中一樣獲得連接或其他東西。
4
我搜索了很多其他的解決方案,沒有在java本身編程anythin。 我來到了以下結論
<?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
我張貼這種解決這個老帖子,因爲我發現這個在老論壇帖子(谷歌搜索Side 3+ ^^)。我認爲這非常有用。
相關問題
- 1. 如何在hibernate配置文件中使用環境變量?
- 2. Jenkins環境變量的Android配置
- 3. Jenkins中的預配置環境變量
- 4. NLog環境變量配置文件
- 5. 從環境變量配置舞者?
- 6. Windows環境變量與配置文件
- 7. 配置文件沒有環境變量
- 8. Python配置解析器環境變量
- 9. 根據環境變量配置vimrc
- 10. SMTP配置環境變量pickup pickup directoryocation
- 11. Windows Azure:如何將配置設置公開爲環境變量?
- 12. 如何在tomcat中設置環境變量CA_DATA配置
- 13. 如何設置GAE環境特定的環境變量?
- 14. 使用環境變量或配置/環境來存儲配置值
- 15. 未分配環境變量
- 16. 如何在Supervisord的[supervisord]配置節中使用環境變量?
- 17. 如何設置環境變量&
- 18. 如何設置GAE_SDK_ROOT環境變量?
- 19. 如何設置CGBITMAP_CONTEXT_LOG_ERRORS環境變量?
- 20. msbuild,如何設置環境變量?
- 21. 如何爲Jython設置環境變量?
- 22. 如何從Scala設置環境變量?
- 23. GETENV - 如何設置環境變量
- 24. 如何設置TERM環境變量
- 25. 如何設置SUDO_ASKPASS環境變量?
- 26. 如何爲python設置環境變量
- 27. 如何設置vsvars32環境變量?
- 28. IDEA:如何設置環境變量?
- 29. 如何爲PHP設置環境變量?
- 30. 如何永久設置環境變量?
非常感謝你在幾分鐘之前就想出了它。 :) –
請讓我知道如果它是好的或不。祝你好運:) –
你可能需要調整從System.getenv(「DATABASE_URL」)返回的字符串。 –