インターネットでは、このトピックに関する最近の反対の情報をよく見つけます...したがって、最小要件について質問したいと思います。
私の目標は、単純な EJB 3.1 アプリケーションの非常に単純な統合テストを行うことです。
- EclipseLink を使用した単純な JPA 2.0 機能
- テスト用の JUnit を使用した Arquillian
- メイヴン
- Derby DB (メモリー内または ./target 内のファイル内)、JTA パーシスタンス コンテキスト。
- Arquillian に組み込まれた Glassfish
だから私は単純なJPAテストをしたいだけです。Glassfish を Arquillian で実行していますが、JPA を実行すると、アプリは常に Derby DB の処理に失敗します (テーブルなどがないことを教えてくれます) が、DDL ファイルは正常に見えます。persistence.xml でスキーマ名、ユーザーなどを指定して遊んでみましたが、何も役に立ちません。埋め込み Glassfish が私の persistence.xml と一致するように、または arquillian.xml を適応させるために、最小限の domain.xml を変更することについての投稿に出くわすことがあります。
私の質問は次のとおりです。この最小限のアプローチについて、本当に src/test/glassfish/domains/domain1/domain.xml または arquillian.xml が必要ですか?
しばらく前に、Embedded Glassfish を使用してこれを行うことができましたが、Hibernate 4 を JPA プロバイダーとして使用していると確信しています。私はもはやプロジェクトにアクセスできないため、domain.xmlなどを明確に追加しなかったことを除いて、違いを見分けることはできません。(他の質問はこちら)のような投稿は本当に混乱します。
重要なのは、管理対象サーバーではなく組み込みサーバーを使用していることです。
ありがとう、ティモ
これは私のバージョンの 1 つです。次のコメントを参照してください。
<persistence-unit name="localiser-core" transaction-type="JTA">
<jta-data-source>jdbc/__default</jta-data-source>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
<property name="javax.persistence.jdbc.url"
value="jdbc:derby:memory:test;create=true" />
<property name="javax.persistence.jdbc.user" value="" />
<property name="javax.persistence.jdbc.password" value="" />
<property name="eclipselink.target-database" value="Derby"/>
<property name="eclipselink.ddl-generation.output-mode"
value="database" />
<property name="eclipselink.ddl-generation" value="create-tables" />
<property name="eclipselink.application-location" value="target" />
<property name="eclipselink.create-ddl-jdbc-file-name" value="create.sql"/>
<property name="eclipselink.drop-ddl-jdbc-file-name" value="drop.sql"/>
<property name="eclipselink.debug" value="ALL"/>
<property name="eclipselink.weaving" value="static"/>
<property name="eclipselink.logging.level" value="FINEST"/>
<property name="eclipselink.logging.level.sql" value="FINEST"/>
<property name="eclipselink.logging.level.cache" value="FINEST"/>
</properties>
</persistence-unit>