[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 メーリングリストの案内