§JPA の統合
§プロジェクトに依存性を追加する
まず初めに、JDBC と JPA の api 依存性を提供する javaJpa プラグインをプロジェクトが 必要としていることを play に伝える必要があります。
Play に組み込みの JPA 実装は含まれません; どんな実装でも選ぶことができます。例えば Hibernate を使う場合でも、プロジェクトに依存性を追加するだけです:
val appDependencies = Seq(
javaJpa,
"org.hibernate" % "hibernate-entitymanager" % "3.6.9.Final" // replace by your jpa implementation
)
§JNDI を経由してデータソースを公開する
JPA を使用するには JNDI 経由でデータソースをアクセス可能にする必要があります。Play で管理しているデータソースは conf/application.conf
に以下の設定を追加する事で JNDI に公開することができます。
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"
db.default.jndiName=DefaultDS
§永続性ユニットを作成する
次に、適切な persistence.xml
JPA 設定ファイルを作成する必要があります。設定ファイルを conf/META-INF
ディレクトリに配置すると、クラスパスに適切に追加されます。
以下は Hibernate を使うための設定ファイルの見本です。
<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="defaultPersistenceUnit" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<non-jta-data-source>DefaultDS</non-jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
</properties>
</persistence-unit>
</persistence>
最後に、JPA プロバイダが使用すべき依存性ユニットを Play に伝えなければなりません。application.conf
の jpa.default
プロパティを指定します。
jpa.default=defaultPerstistenceUnit
§JPA のアクションに @Transactional
アノテーションを付ける
各 JPA 呼び出しはトランザクションの中で行われる必要があるため、JPA を特定のアクションで有効にするには、 @play.db.jpa.Transactional
アノテーションを付けます。これにより、トランザクション管理をする JPA Action
がアクションメソッドに組み合わされます。
@Transactional
public static Result index() {
...
}
アクションがクエリーしか実行しない場合は、 readOnly
属性を true
にすることができます。
@Transactional(readOnly=true)
public static Result index() {
...
}
§play.db.jpa.JPA
ヘルパーを使う
play.db.jpa.JPA
ヘルパークラスを使う事で、好きなタイミングで現在のエンティティ・マネージャを取得することができます。
public static Company findById(Long id) {
return JPA.em().find(Company.class, id);
}
次ページ: キャッシュを使う
このドキュメントの翻訳は Play チームによってメンテナンスされているものではありません。 間違いを見つけた場合、このページのソースコードを ここ で確認することができます。 ドキュメントガイドライン を読んで、お気軽にプルリクエストを送ってください。