[Seasar-user:20031] Re: [Kuina-Dao]SQLの実行の同期について

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2010年 7月 30日 (金) 10:00:00 JST


小林 (koichik) です.

Date:    Fri, 30 Jul 2010 09:26:24 +0900
From:    Inamine Morihiko <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:20030] Re: [Kuina-Dao]SQLの実行の同期について

>   ・Flexからの一度のHTTP通信で1トランザクションと考えてます
>     一つのトランザクションの中でJPAで情報を変更
>     (INSERT、UPDATE、DELETE等)して、その後、
>     同一トランザクションでSQLを使用し、
>     変更した情報も含め検索し、
>     さらに情報の更新
>     といった処理は出来ないのでしょうか?

いいえ,できます.
Kuina-Dao は EntityManager のローカル
トランザクションではなく,JTA による
グローバルトランザクションを使います.
そのため,EntityManager 経由の操作も
JDBC を直接利用した操作も同一の
トランザクションとなります.

また,Kuina-Dao の SQL による問い合わせの
実行前には JPA の永続コンテキストを flush()
(同期化) するので,JPA によって更新した情報も
SQL での問い合わせ結果に含まれます.

> > > 書籍(Seasar2とHibernateで学ぶデータベースアクセスJPA入門)では
> > >   SQLの利用 P.238
> > >   ・データベースの同期化を気にする必要は有りません
> この場合、Kuina-DaoのSQL機能の中で同期化(commit)は
> 必要ないと言う認識で正しいのでしょうか?

そこでの「同期化」はコミットのことではありません.
該当ページのもう少し (10〜20 ページくらい?) 前に
永続コンテキストの同期化のことが書いてあったと
思うので,探して読んでみてください.
キーワードは「永続コンテキスト」です.
永続コンテキストを制するものは JPA を制す.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



Seasar-user メーリングリストの案内