3

私はopenJPAを初めて使用します。

アプリケーションを実行しているサーバーに応じて、設定をpersistance.xmlに変更する必要があるシナリオがあります。たとえば。サーバーAで実行されている場合は、別のデータベース(別のURL)、別のパスワードなどを使用する必要があります。アプリケーションがサーバーBで実行されている場合は、別の情報を使用する必要があります。

また、データソースを使用するか、単にプロパティを永続性ユニットの下に置くか、どちらの方法で実行する必要があるかを教えてください。

参考までに、私はWSアプリを使用しています。サーバー7およびRAD7.5

どんな種類の助けも大歓迎です。

4

1 に答える 1

4

アプリケーションサーバーを使用しているため、persistence.xmlファイルでデータベース接続設定を設定する必要はありません。appserverでJNDIデータソースを作成し、それを使用できるはずです。各サーバーのデータソースに同じJNDI名を付けることができ、persistence.xmlの違いは必要ありません。

Workshop、JPA、およびDataSourcesは特にあなたに関連しているようです。WebSphere 6.0/6.1およびWebSphere+JNDI + Spring Framework+HibernateでのJNDIデータソースのセットアップも同様です。

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データソースを使用できます。

于 2009-06-13T23:23:38.357 に答える