You are viewing the documentation for the 2.1.5 release in the 2.1.x series of releases. The latest stable release series is 2.4.x.
§JPA の統合
§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
§JPA の実装をプロジェクトに追加する
Play 2.0 には JPA の実装は同梱されていません。ユーザは任意の実装を選択することができます。例えば、Hibernate を使う場合はプロジェクトに依存関係を追加します。
val appDependencies = Seq(
"org.hibernate" % "hibernate-entitymanager" % "3.6.9.Final"
)
§永続性ユニットを作成する
次に、適切な 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 のアクションに @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);
}
次ページ: キャッシュを使う