编程语言
首页 > 编程语言> > java-如何在运行时更改persistence.xml

java-如何在运行时更改persistence.xml

作者:互联网

我是openJPA的新手.

我有一种情况,根据我的应用程序运行所在的服务器,我需要将设置更改为persistance.xml.
例如.如果它在服务器A上运行,则应使用不同的数据库(不同的URL),不同的密码等.如果应用程序在服务器B上运行,则应使用不同的信息.

而且您还可以告诉我,使用数据源或仅将属性放在持久性单元下,应采用哪种方法.

仅供参考,我正在使用WS应用程序.服务器7和RAD 7.5

任何类型的帮助将不胜感激.

解决方法:

您正在使用应用程序服务器,因此不需要在persistence.xml文件中设置数据库连接设置.您应该能够在您的应用服务器中创建JNDI数据源,然后使用它. EAch服务器可以使数据源具有相同的JNDI名称,因此不需要任何persistence.xml差异.

Workshop, JPA, and DataSources似乎与您特别相关.就像Setting up a JNDI data source in WebSphere 6.0/6.1WebSphere + JNDI + Spring Framework + Hibernate一样.

您在使用Spring吗?如果是这样,那么问题就很容易解决:您无需将数据源信息放在persistence.xml中,而是将其放在应用程序上下文中,并且每台服务器上的配置都不同.

例如:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="classpath:database.properties"/>
</bean>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${database.class}"/>
    <property name="url" value="${database.url}"/>
    <property name="username" value="${database.username}"/>
    <property name="password" value="${database.password}"/>
</bean>

每个服务器在每个服务器上可能具有不同的database.properties文件(在此示例中,每个文件都位于类路径中的某个位置):

database.username=scratch
database.password=scratch
database.class=oracle.jdbc.OracleDriver
database.url=jdbc:oracle:thin:@localhost:1521:XE

在运行时更改persistence.xml会有问题,因为这并不是JPA的设计方式.

当然,您也可以在Spring中使用JNDI数据源.

标签:openjpa,jpa,java
来源: https://codeday.me/bug/20191107/2003677.html