Documentation

You are viewing the documentation for the 2.1.x release series. 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);
}

次ページ: キャッシュを使う


このドキュメントの翻訳は Play チームによってメンテナンスされているものではありません。 間違いを見つけた場合、このページのソースコードを ここ で確認することができます。 ドキュメントガイドライン を読んで、お気軽にプルリクエストを送ってください。