[Seasar-user:15480] Re: Isolation Levelについて

kubo [E-MAIL ADDRESS DELETED]
2008年 8月 23日 (土) 14:11:27 JST


久保です。

陳捷さん

dbflute-db2-exampleをご覧頂くことは可能でしょうか?

https://www.seasar.org/svn/sandbox/dbflute/trunk/dbflute-db2-example
SVNからチェックアウトすることが可能です。

そのプロジェクトのテストケースVendorCheckTestをご覧下さい。
https://www.seasar.org/svn/sandbox/dbflute/trunk/dbflute-db2-example/src/test/java/com/example/dbflute/db2/dbflute/various/VendorCheckTest.java

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
// ## Arrange ##
VendorCheckCB cb = new VendorCheckCB();
cb.lockWithRS();

// ## Act ##
vendorCheckBhv.selectList(cb);// Expect no exception!

// ## Assert ##
assertTrue(cb.toDisplaySql().contains("with RS"));
* * * * * * * * * */

というように、「cb.lockWithRS();」という形で指定
できるようにしています。SQLの最後に「with RS」が
付与されます。その他(RR, CS, UR)についても同様です。

こちら、ビルドプロパティ(build-xxx.properties)に
「torque.isAvailableDatabaseDependency = true」
を追加して自動生成し直すことで有効になります。
https://www.seasar.org/svn/sandbox/dbflute/trunk/dbflute-db2-example/dbflute_exampledb/build-exampledb.properties

DBFluteは、極力DB依存のメソッドは生成しない
ポリシーだったので、今回オプションという形で
生成することにしました。

この機能が反映されたバージョン(SNAPSHOT)がこちら
からダウンロードできます。
http://dbflute.sandbox.seasar.org/download/dbflute/dbflute-0.7.9.zip
SNAPSHOTになりますので、正式版がリリースされたら
差し替えるようにして下さい。

2008/8/22 陳捷 <[E-MAIL ADDRESS DELETED]>:
> 小林さん
>
> ご回答ありがとうございました。陳捷です。
>
> 試しておきます。
>
> 2008/08/22 15:15 Koichi Kobayashi <[E-MAIL ADDRESS DELETED]>:
>> 小林 (koichik) です.
>>
>> Date:    Fri, 22 Aug 2008 13:56:56 +0900
>> From:    "陳捷" <[E-MAIL ADDRESS DELETED]>
>> To:      [E-MAIL ADDRESS DELETED]
>> Subject: [Seasar-user:15459] Isolation Levelについて
>>
>>> DB2では、分離レベルは4つあります:RR、RS、CS、UR。
>>>
>>> DB2の分離レベルを使用したい場合は、DB2のDialectを使うべきだと思います。
>>
>> コネクションレベルで分離レベルを設定する場合は,
>> JDBC APIで設定できるので Dialect を意識する必要は
>> ありません.
>>
>> Connection#setTransactionIsolation(int)
>>
>> DB2 の分離レベルと JDBC (ANSI/ISO SQL 標準) との
>> 対応は以下のとおりです.
>>
>> UR : Connection#TRANSACTION_READ_UNCOMMITTED
>> CS : Connection#TRANSACTION_READ_COMMITTED
>> RS : Connection#TRANSACTION_REPEATABLE_READ
>> RR : Connection#TRANSACTION_SERIALIZABLE
>>
>>
>> コネクションプール全体で分離レベルを設定するには
>> jdbc.dicon で次のように設定します.
>>
>> <component name="connectionPool"
>>    class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
>>  <property name="transactionIsolationLevel">
>>    @[E-MAIL ADDRESS DELETED]
>>  </property>
>>  ...
>>
>>
>> コネクションごとに個別に設定するなら,DataSource から
>> getConnection() でコネクションを取得して
>> Connection#setTransactionIsolation(int) で
>> 設定してください.
>> その場合,上記の方法でコネクションプールに
>> デフォルトの分離レベルを設定してください.
>> コネクションプールからコネクションを取得する度,
>> デフォルトの分離レベルが設定されます.
>>
>>
>> --
>> <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 mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


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