[Seasar-user:20012] [Kuina-Dao]Criteria使用時のトランザクション
Inamine Morihiko
[E-MAIL ADDRESS DELETED]
2010年 7月 28日 (水) 17:19:14 JST
お世話になります
稲嶺といいます
Kuina-Dao(Hibernate)+Mysqlを使用しています。
コンボボックス用のデータ抽出の為のメソッドを作成したいのですが
JPQLのcriteriaを利用してみました。
処理説明:
JPQLのCriteria以外に
通常のKuina-daoでのデータ取得メソッドを実行する場合
(例:useAddres.getUserName())
質問1:EntityManagerを宣言していますが実行すると
トランザクションは2つになっているのでしょうか?
質問2:Kuina-DaoのJPQLが詳しく説明されているサイト及び本が有りましたら
教えてください。
ソース:
-----------------------------------------------
Java(Kuina-Dao):
import static org.seasar.kuina.dao.criteria.
CriteriaOperations.selectDistinct;
public class DaoTest extends S2TestCase {
EntityManager em;
shopMstDao shopDao;
@Override
protected void setUp() throws Exception {
super.setUp();
include("app.dicon");
}
public void testFindTx() throws Exception {
List<String> list = selectDistinct("e.ken").
from(shopMst.class, "e").
getResultList(em);
Iterator it = list.iterator();
while (it.hasNext()) {
String shopken = (String)it.next();
System.out.println("県名=[" + shopken + "]");
}
shopMst shop = shopDao.find(1);
System.out.println("ショップ名=[" + shop.getShopName() +"]");
}
}
----------------------------------------------------------------
実行時のDEBUGログ
DEBUG [main] クラス(XXXX.dao.ShopMstDao[shopMstDao])のコンポーネント定義
を登録します
DEBUG [main] トランザクションを開始しました。tx=[FormatId=4360,
GlobalId=1280304082984/0, BranchId=]
DEBUG [main] BEGIN XXXX.dao.ShopMstDao#find(1)
DEBUG [main] トランザクションを開始しました。tx=[FormatId=4360,
GlobalId=1280304082984/1, BranchId=]
DEBUG [main] トランザクションをロールバックしました。tx=[FormatId=4360,
GlobalId=1280304082984/1, BranchId=]
DEBUG [main] トランザクションを開始しました。tx=[FormatId=4360,
GlobalId=1280304082984/2, BranchId=]
DEBUG [main] トランザクションをロールバックしました。tx=[FormatId=4360,
GlobalId=1280304082984/2, BranchId=]
DEBUG [main] トランザクションを開始しました。tx=[FormatId=4360,
GlobalId=1280304082984/3, BranchId=]
DEBUG [main] トランザクションをロールバックしました。tx=[FormatId=4360,
GlobalId=1280304082984/3, BranchId=]
DEBUG [main] クラス(interface XXXX.dao.ShopMstDao)のメソッド(public
abstract XXXX.entity.ShopMst XXXX.dao.ShopMstDao.find(java.lang.Integer))
には(org.seasar.kuina.dao.internal.command.FindCommand)コマンドが適用され
ます
DEBUG [main] 論理的なコネクションを取得しました。tx=[FormatId=4360,
GlobalId=1280304082984/0, BranchId=]
DEBUG [main] 論理的なコネクションを閉じました。tx=[FormatId=4360,
GlobalId=1280304082984/0, BranchId=]
DEBUG [main] END XXXX.dao.ShopMstDao#find(1) : [E-MAIL ADDRESS DELETED]
INFO [main] JPQLを実行します
SELECT DISTINCT e.shopKen FROM ShopMst AS e
DEBUG [main] 論理的なコネクションを取得しました。tx=[FormatId=4360,
GlobalId=1280304082984/0, BranchId=]
DEBUG [main] 論理的なコネクションを閉じました。tx=[FormatId=4360,
GlobalId=1280304082984/0, BranchId=]
県名=[東京都]
県名=[福島県]
1件目のデータ:店舗名称=[御徒町東]
DEBUG [main] トランザクションをロールバックしました。tx=[FormatId=4360,
GlobalId=1280304082984/0, BranchId=]
DEBUG [main] 物理的なコネクションを閉じました
------------------------------------------------------------------------
-以上です
Seasar-user メーリングリストの案内