1

永続化に JPA を使用するスタンドアロンの Java アプリケーションがあります。現在、META-INF に persistence.xml があります。私のアプリケーションは現在開発中です。私の質問は、私が開発から次の環境に移行する場合、たとえば QA です。persistence.xml を変更して、jar を再構築する必要があります。これは正しい方法ですか?そうでない場合、接続プロパティを別のファイルに移動する場合、このファイルはどこに配置する必要がありますか?

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
 http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0">
    <persistence-unit name="pu1" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <class>ClassA</class>
        <class>ClassB</class>
        <class>ClassC</class>
        <class>ClassD</class>


        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle9Dialect" />
            <property name="hibernate.connection.driver_class" value="oracle.jdbc.OracleDriver" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.connection.username" value="username" />
            <property name="hibernate.connection.password" value="password" />
            <property name="hibernate.connection.url"
                value="url" />
            <property name="hibernate.max_fetch_depth" value="3" />
            <property name="hibernate.archive.autodetection" value="class" />
        </properties>
    </persistence-unit>
</persistence>

前もって感謝します !

4

1 に答える 1

4

それは良い質問です。通常、これらすべての環境設定を application.properties などの外部ファイルに入れ、アプリケーションの起動時にその場所を JVM に渡します (例: -Dconfig.location=/conf/) 。

次に、外部化されたプロパティを に取得する方法を見つける必要がありますEntityManagerFactory。persistence.xml でそれを行うことはできません。そこではハードコードすることしかできません。ただし、エンティティ マネージャー ファクトリを作成するときに、ベンダー プロパティを渡すことでそれを行うことができます。

たとえば、Spring のようなフレームワークを使用する場合、Spring はエンティティーマネージャーにファクトリー Bean を提供するため、これは簡単に実行できます。それ以外の場合は、自分で処理する必要があります。春からの関連ビットは次のとおりです。

provider.createEntityManagerFactory(persistenceUnitInfo, getJpaPropertyMap())
于 2012-05-07T13:35:06.287 に答える