我正在使用hibernate編寫一個javaEE應用程序。該應用程序將在多個環境(dev,qa,prod等)上運行。&將具有與每個環境相關聯的單獨dbs。我想爲每個環境分別設置hibernate屬性,如jdbc-url,username,password等。Hibernate JTA:每個環境讀取數據庫連接參數
我現在persistence.xml
樣子:
<persistence-unit name="PU" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<validation-mode>CALLBACK</validation-mode>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect" />
<property name="hibernate.hbm2ddl.auto" value="validate" />
<property name="hibernate.temp.use_jdbc_metadata_defaults" value="false"/>
<property name="hibernate.event.merge.entity_copy_observer" value="allow"/>
<property name="hibernate.connection.driver_class" value="oracle.jdbc.OracleDriver"/>
<property name="hibernate.connection.url" value="jdbc:oracle:thin:@host/schema"/>
<property name="hibernate.connection.username" value="abc"/>
<property name="hibernate.connection.password" value="***"/>
</properties>
</persistence-unit>
我使用的持久性單元在我的Java代碼如下:
@PersistenceContext(unitName = "PU")
private EntityManager em;
有沒有辦法,我可以注入休眠特性的一種方式,其存儲在單獨的屬性文件中,進入不同環境的EntityManager?
請注意,我使用JTA,因此無法使用EntityManagerFactory。我也不是&不想用春天。
時,你的意思是不同的環境,你不包括應用服務器?因爲數據源/數據庫屬性將由應用程序服務器共享,所以生產服務器將具有生產數據庫屬性,並且開發服務器將具有開發屬性 – AntJavaDev
是的。應用程序在不同的環境中也會有不同的虛擬機。 –
然後你應該讓hibernate conf依賴於服務器的數據源conf,f.e.如果你有一個tomcat服務器,你應該定義3個不同的數據庫上下文 – AntJavaDev