CommonTools (V0.4.1b) | 2014-06-06 23:24 |
sormap (V0.4.0.0) | 2014-06-06 23:13 |
SorMap バージョン0.3.1からは、SQLインタフェースを使ってSQLインタフェースコンテナ(SQLインタフェースとSQLXML, JDBCコネクションなどをつなぐコンテナ オブジェクト)と対話できるようになりました。 例えば、従来のSorMapであればSQLインタフェースのインスタンス作成後にUBTC(ユーザベーストランザクション制御)の制御やオートコミットモードの制御 などを行うことができませんでしたが、本バージョンのSQLインタフェースコンテナ制御を用いて、SQLインタフェースを用いて上記のフラグをはじめ、 トランザクションのコミットやロールバックなどを行えるようになります。
SQLインタフェースコンテナと対話する方法は簡単です。 通常、SQLインタフェースはSQLXMLのSQL命令と一対一になるようにメソッドを定義しますが、それに加えて "特定のシグニチャ"と"名前"を持つメソッドをSQLインタフェースに用意するだけです。 以下のサンプルコードをご覧ください。
- package org.dyndns.nuda.sormap.sample;
- import java.util.List;
- import org.dyndns.nuda.mapper.annotation.JDBCQuery;
- @JDBCQuery(sqlxml = "org/dyndns/nuda/sormap/sample/query.xml")
- public interface SampleInterface {
- public List<TestSchemeBean> select();
- public List<TestSchemeBean> selectBy();
- public void insert(List<TestSchemeBean> params);
- public void insert(TestSchemeBean param);
- public void update(List<TestSchemeBean> params);
- public void update(TestSchemeBean param);
- public void delete(List<TestSchemeBean> params);
- public void delete(TestSchemeBean param);
- }
いたって平凡なSQLインタフェースです。 ここに、UBTCの制御をおこなうためのメソッドを追加で定義します。
- package org.dyndns.nuda.sormap.sample;
- import java.util.List;
- import org.dyndns.nuda.mapper.annotation.JDBCQuery;
- @JDBCQuery(sqlxml = "org/dyndns/nuda/sormap/sample/query.xml")
- public interface SampleInterface {
- public List<TestSchemeBean> select();
- public List<TestSchemeBean> selectBy();
- public void insert(List<TestSchemeBean> params);
- public void insert(TestSchemeBean param);
- public void update(List<TestSchemeBean> params);
- public void update(TestSchemeBean param);
- public void delete(List<TestSchemeBean> params);
- public void delete(TestSchemeBean param);
- // ここから↓
- /**
- * ユーザベーストランザクション機能を制御します
- *
- * @param useManualTransaction
- * ユーザベーストランザクション機能ON:true / ユーザベーストランザクション機能OFF:false
- */
- public void useManualTransaction(boolean useManualTransaction);
- /**
- * 現在設定されているユーザベーストランザクション機能の状態を取得します
- *
- * @return useManualTransaction ユーザベーストランザクション機能ON:true / ユーザベーストランザクション機能OFF:false
- */
- public boolean isUseManualTransaction();
- // ここまで↑
- }
上記サンプルコードのように、useManualTransactionメソッドおよびisUseManualTransactionメソッドを(上記のシグニチャ通りに)定義すると SQLインタフェースからUBTCの状態制御を行えるようになります。 なお、上記サンプルコードでは単純にメソッド定義を追加しただけですが、インタフェース継承でも同様の結果が得られます。 以下のインタフェースをご覧ください。
- package org.dyndns.nuda.mapper.helper.command;
- import org.dyndns.nuda.mapper.helper.SQLInterfaceControllerCommand;
- /**
- * ユーザベーストランザクション制御機能を操作するためのSQLインタフェースコンテナ制御コマンドです
- *
- * @author nkoseki
- *
- */
- public interface UseManualTransactionCommand extends
- SQLInterfaceControllerCommand {
- /**
- * ユーザベーストランザクション機能を制御します
- *
- * @param useManualTransaction
- * ユーザベーストランザクション機能ON:true / ユーザベーストランザクション機能OFF:false
- */
- public void useManualTransaction(boolean useManualTransaction);
- /**
- * 現在設定されているユーザベーストランザクション機能の状態を取得します
- *
- * @return useManualTransaction ユーザベーストランザクション機能ON:true / ユーザベーストランザクション機能OFF:false
- */
- public boolean isUseManualTransaction();
- }
上記インタフェースは、サンプルコードではなく、本バージョンで実際に導入されたインタフェースです。 このインタフェースを継承した形で、先ほどのSQLインタフェースを定義しなおします。
- package org.dyndns.nuda.sormap.sample;
- import java.util.List;
- import org.dyndns.nuda.mapper.annotation.JDBCQuery;
- import org.dyndns.nuda.mapper.helper.command.UseManualTransactionCommand;
- @JDBCQuery(sqlxml = "org/dyndns/nuda/sormap/sample/query.xml")
- public interface SampleInterface extends UseManualTransactionCommand {
- public List<TestSchemeBean> select();
- public List<TestSchemeBean> selectBy();
- public void insert(List<TestSchemeBean> params);
- public void insert(TestSchemeBean param);
- public void update(List<TestSchemeBean> params);
- public void update(TestSchemeBean param);
- public void delete(List<TestSchemeBean> params);
- public void delete(TestSchemeBean param);
- }
これで、先ほどのサンプルコードと同様に、SampleInterfaceインタフェースにはuseManualTransactionメソッドおよびisUseManualTransactionメソッド が存在することになります。 この状態で、SQLインタフェースを生成すると、UBTCの状態の途中変更が上記メソッドから可能になります。 このようなインタフェースのことをSorMapでは「SQLインタフェースコンテナ制御コマンド」と呼んでいます。 下記に、現在SQLインタフェースコンテナを制御可能なインタフェースの一覧を示します
No. | インタフェース名 | 概要 |
1 | org.dyndns.nuda.mapper.helper.command.GetConnectionCommand | SQLインタフェースコンテナが参照するJDBCコネクションオブジェクトの取得を行うSQLインタフェースコンテナ制御コマンドです |
2 | org.dyndns.nuda.mapper.helper.command.UseAutoCommitCommand | 自動コミットモードの制御を行うためのSQLインタフェースコンテナ制御コマンドです |
3 | org.dyndns.nuda.mapper.helper.command.UseManualTransactionCommand | UBTCの制御を行うためのSQLインタフェースコンテナ制御コマンドです |
4 | org.dyndns.nuda.mapper.helper.command.TransactionCommand | トランザクションの制御(コミットやロールバック)を行うためのSQLインタフェースコンテナ制御コマンドです |
※なお、各インタフェースの詳細に関してはSorMapバージョン0.3.1に同梱されているJavaDocをご覧ください。