2

Tomcat 6.x 用の Spring (3.1.x)、JSF 2、JPA 2 (Hibernate Provider) を使用して Web アプリケーションを開発しています。DAO クラスをテストしたい。

私のDAOクラスでは:私はこれを行います:

@PersistenceContext
private EntityManager entityManager;

春の設定では;

<bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="OpenPU" />
</bean>

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

persistence.xml 内

<persistence-unit name="OpenPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <non-jta-data-source>java:comp/env/jdbc/mysql_open</non-jta-data-source>
    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect" />
        <property name="hibernate.show_sql" value="true"/>
        <property name="hibernate.transaction.flush_before_completion" value="true"/>
        <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/>
        <property name="hibernate.connection.zeroDateTimeBehavior" value="convertToNull"/>
    </properties>
</persistence-unit>

初めてテストを行うのですが、テストするときに同じ永続化ユニットを使用したくありません。xml データを使用するための dbunit について聞いたことがありますが、テスト中に永続化ユニットを変更する方法がわかりません。私を助けてくれますか、チュートリアルの例を教えてください。

ありがとうございます。

4

1 に答える 1

2

たぶん、このチュートリアルが役立つでしょう。ところで、ニーズに合う興味深いSpring機能が1つあります。それは、組み込みデータベースのサポートです。したがって、私は通常、次の構造を使用してメモリ内のH2データベースを作成し、schema.sqlを使用してスキーマを作成し、test-data.sqlからのデータを入力します。

<jdbc:embedded-database id="dataSource" type="H2">
    <jdbc:script location="classpath:schema.sql"/>
    <jdbc:script location="classpath:test-data.sql"/>
</jdbc:embedded-database>

次に、このBeanをEntityManagerFactoryBeanのデータソースとして使用できます。

<bean id="entityManagerFactory"
   class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
   p:dataSource-ref="dataSource"
   p:persistence-xml-location="classpath:META-INF/persistence.xml">           
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="databasePlatform" value="org.hibernate.dialect.MySQLInnoDBDialect"/>
            <property name="showSql" value="true" />
            <!-- other properties -->
        </bean>
    </property>
    <property name="persistenceUnitName" value="OpenPU" />
</bean>

これは、Springを使用したテスト用のインメモリデータベースを作成するための非常に便利で簡潔な方法です。(クラスパスにH2を追加することを忘れないでください)詳細については、「13.8組み込みデータベースのサポート」の章のドキュメントを参照してください。

于 2011-12-29T07:41:13.267 に答える