Quindi voglio distribuire la mia app java su heroku. Una volta implementato, imposta una variabile di ambiente DATABASE_URL. Voglio usarlo come il mio url per l'ibernazione. Al momento ho hibernate.cfg.xml e lì ho impostato l'url jdbc: postgresql: // localhost: port/db come questo. Come posso cambiarlo per assumere DATABASE_URL?Come configurare Hibernate con la variabile di ambiente
risposta
Uno dei modi è quello di utilizzare setProperty(String propertyName, String value) di Configuration di ignorare in modo esplicito il valore di hibernate.connection.url
prima di creare il SessionFactory.
Per ottenere le variabili di ambiente, è possibile utilizzare 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();
maggio di aiuto,
Sto usando HSQL DB di JBoss AS 5.xe Hibernate per creare dinamicamente le tabelle e l'utilizzo di file seguente * .cfg.xml.
che utilizza $
JBOSS_HOME come variabile di ambiente.
<?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>
Così, la sua media se si desidera utilizzare variabile d'ambiente in Jboss config allora il vostro possibile utilizzare normalmente che poi presa dal programma di utilità hibernate.jar interna e ottieni la connessione o cose normalmente come in un programma java.
Ho cercato molto per un'altra soluzione senza alcuna programmazione in java. Sono venuto a questa conclusione
<?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>
e comincio la mia applicazione con i seguenti vmargs:
-Dhibernate_username=test-Dhibernate_password=testpassword -Dhibernate_db_host=localhost -Dhibernate_db_name=test -Dhibernate_show_sql=true
ho posto questa soluzione a questo vecchio post, perché ho trovato questo in un vecchio post sul forum (Google Search Lato 3+ ^^). E penso che questo sia molto utile.
- 1. Node.js per sempre con variabile di ambiente
- 2. UNIX, ottenere la variabile di ambiente
- 3. Aggiungere la variabile di ambiente a Hudson
- 4. Imposta la variabile di ambiente con spazio linux
- 5. variabile di ambiente pom.xml con fallback predefinito
- 6. Ottieni l'indirizzo variabile di ambiente
- 7. come impostare la variabile di ambiente per l'utente root
- 8. Come utilizzare la variabile di ambiente Docker nell'array ENTRYPOINT?
- 9. Come impostare la variabile di ambiente o la proprietà di sistema nei test di primavera?
- 10. Come impostare la variabile di ambiente usando Chef?
- 11. Come configurare un ambiente Biztalk con più sviluppatori?
- 12. Variabile ambiente di sistema Java
- 13. Come configurare Spring/Hibernate con MySQL Read-Replica
- 14. come impostare la variabile di ambiente dai contenuti del file?
- 15. Come espandere la variabile di ambiente% CommonProgramFiles% \ system \ in .NET
- 16. Come impostare la variabile di ambiente in Netbeans?
- 17. Configurare il pool di connessioni Hibernate C3P0
- 18. Leggere la variabile di ambiente nel file make
- 19. Caricare la variabile di ambiente prima di eseguire
- 20. Come configurare log4j in un ambiente di test dell'unità?
- 21. Aggiungi la variabile di ambiente segreta a Travis CI
- 22. Per che cosa è la variabile di ambiente XDG_SESSION_COOKIE?
- 23. espansione tilde nella variabile di ambiente
- 24. Variabile di ambiente con webpack su sviluppo e produzione
- 25. L'accesso ai ambiente utente variabile
- 26. Imposta percorso include con valore variabile di ambiente
- 27. Imposta la variabile di ambiente globale da Node.js
- 28. System.getenv() restituisce null quando esiste la variabile di ambiente
- 29. La variabile di ambiente è troppo grande su Windows 10
- 30. Impostare la variabile di ambiente Heroku senza riavviare l'app
Grazie mille per averlo capito pochi minuti fa. :) –
Per favore fatemi sapere se va bene o no. Buona fortuna :) –
Potrebbe essere necessario modificare la stringa restituita da System.getenv ("DATABASE_URL"). –