1

JPA の CriteriaQuery ベースのクエリに関して、簡単な質問がありますか? Java EE の例 (http://docs.oracle.com/javaee/6/tutorial/doc/giqsq.html) で気付きました。

entityManager.getTransaction().begin()

entityManager.getTransaction().commit()

使用されません。

その結果、これらの操作は、クエリが作成されたときに CriteriaQuery によって暗黙的に処理されるというのは本当ですか?

4

2 に答える 2

2

Criteria はトランザクションについて何もしません。また、通常の JPQL クエリや名前付きクエリも行いません。トランザクションは個別に制御され、操作 (クエリなど) をトランザクションまたは非トランザクションとして実行できます。明らかに、Java EE は一般的にトランザクションを有効にしますが、Java SE ではトランザクションを自分で配置する必要がありますが、それは使用するクエリ メカニズムとは別のものです。

于 2012-08-15T05:29:34.237 に答える
2

EJB なしで JPA のみを使用している場合は、トランザクションを自分で制御する必要があります。つまり、transation().begin()、commit() などを記述します。しかし、OracleのチュートリアルのようにEJBでJPAを使用しているため、メソッドにtransation().begin()、commit()などを記述する必要はありません。

于 2012-08-15T04:25:11.087 に答える