-S2の永続化ソリューション

以下、Seasar2上で利用される永続化ソリューションについてならべました。

  • プロジェクト外ソリューション
  • S2Hibernate
  • S2DataSet
    • XlsReader/XlsWriter
    • ほかDBアクセスのものが予定されている
      • SqlReader
      • TableReader/TableWriter
  • S2Dao
  • S2JDBC
  • ユーザーコード

IoCコンテナですから、プロジェクト外のソリューションをそのまま、もしくはユーザーコードでラップして搭載することが可能です。いくらか厚めのラップですがその方法で来ているのがS2Hibernate。適用としてはHibernateを利用している場合、もしくはHibernateをいくらかは知ってる技術者がS2シリーズの中では第一に選択することになるかと思います(すいません、今時点ではS2Hibernateは見ていないのです)。
S2オリジナルのSimple&Kind思想による永続化ソリューションがS2DataSetとS2Daoです。POJOとして実装しているのがS2DataSetで、AspectなアプローチがS2Daoになるかと、乱暴ながら違いがあります。これらの内、DBに永続化するものの実装に利用されているのがS2JDBCであり(ひがさんのコメント&BLOGでの説明による)ユーザーコード中で独自に利用することも可能です。
S2DataSetはテーブルベースでのデータアクセス形式をシンプルにAPI化していてExcelとDBとの相互永続化性を提供するソリューションです。各永続化リソース種ごとに用意されたDataReaderおよびDataWriterの実装から、APIで用意されているDataSet、DataTable、DataRow、DataColumnとメソッドでチェーンされるオブジェクトを介してデータ操作を行います。よって、利用するクライアントコード中では統一的でシンプルなAPIを記述することになります。
S2Daoは、SQLをとにかく自由に記述してデータ操作を行うソリューションです。利用するクライアントコードでは、データアクセスに関する記述を一切しません。SQLを記述したS2Daoの設定XMLAspectで処理することによって、WeavingされたJavaインターフェイスおよび抽象クラス含むコンポーネントにデータアクセス機能を実装します。