240 likes | 618 Views
S2JDBC を intra-mart 上で 動かしてみた. Jun Okazaki. メニュー. S2JDBC って ?( 簡単な説明 ) IM で S2JDBC を使うためには (iWP7.1) 必要な JAR をそろえる ファイルの設定 iWP7.0 利用の場合の留意点 まとめ. S2JDBC って ?( 簡単な説明 ). Seasar2 の O/R マッパー データベースプログラミングの生産性を (Java の標準 API と比較して ) 10 倍以上 早めることが目標 (Seasar Project 比 )
E N D
S2JDBCをintra-mart上で動かしてみた Jun Okazaki
メニュー • S2JDBCって?(簡単な説明) • IMでS2JDBCを使うためには(iWP7.1) • 必要なJARをそろえる • ファイルの設定 • iWP7.0利用の場合の留意点 • まとめ
S2JDBCって?(簡単な説明) • Seasar2のO/Rマッパー • データベースプログラミングの生産性を(Javaの標準APIと比較して)10倍以上早めることが目標(Seasar Project比) • 全部説明するのは不可なので↓ (参照)http://s2container.seasar.org/2.4/ja/s2jdbc_abstract.html • 実際使用してみると,データ周りのプログラミングがすごくすっきりする
S2JDBCって?(簡単な説明) 従来(ex. im-JavaEEFramework のデータフレームワーク) ・Model ・DAOインタフェース ・DAO Select文全件取得PreparedStatement無し S2JDBC利用 ・Model ・DAOインタフェース
S2JDBCって?(簡単な説明) 複雑な操作になってもより簡単に設定できる!! ・データ取得開始位置の設定 ・取得件数の設定 ・ResultSetとかも必要ない ・テーブル結合も関数での定義だけ 従来(ex. im-JavaEEFramework のデータフレームワーク) ・Model ・DAOインタフェース ・DAO Select文全件取得PreparedStatement無し S2JDBC利用 ・Model ・DAOインタフェース
サンプル ex.Daoクラスへの記述外出しSQL,条件無し,全件取得の場合,以下のメソッドの結果をreturnして上げるだけ これでDAOクラスのメソッドの1つが完結してしまいます jdbcManager.selectBySqlFile(<モデルクラス名>.class,“<SQLファイル>").getResultList(); 後はModelクラスとテーブルを紐付けて出力してあげれば完成 @Entity @Table(name = “<エンティティのテーブル名>") public class <モデルクラス名>{ @Column(name = “<テーブルが持つカラム名>") private <適当なデータ型> <適当な変数名>;}
こんなに楽なら,使えたほうがいいですよねぇこんなに楽なら,使えたほうがいいですよねぇ 仕事の一環も兼ねて模索してみました
IMでS2JDBCを使うためには(Ver7.1)手順 • 必要なJARファイルを追加する • ファイルの追加,編集 • s2jdbc.diconを追加 • app.dicon編集 • jta-10.dicon編集 • Daoクラス情報を設定するdiconの作成 • ダイアレクトの設定(使用するデータベースの設定) • imartContainer.propatiesの編集 • Ver7.0を使用する場合の留意点
IMでS2JDBCを使うためには(Ver7.1)手順 • 必要なJARファイルをそろえる • ファイルの追加,編集 • s2jdbc.diconを追加 • app.dicon編集 • jta-10.dicon編集 • Daoクラス情報を設定するdiconの作成 • ダイアレクトの設定(使用するデータベースの設定) • imartContainer.propatiesの編集 (注意書きのみ) • Ver7.0を使用する場合の留意点 S2Dao,S2JDBCの設定と同じなので IM独自の設定が必要になる部分のみ説明 参照(http://s2container.seasar.org/2.4/ja/s2jdbc_setup.html)
1.必要なjarファイルをそろえる Ver7.1利用で必要なjarファイルを追加する. • - geronimo-ejb_3.0_spec-1.0.jar • - geronimo-interceptor_3.0_spec-1.0.jar • - geronimo-jpa_3.0_spec-1.0.jar • - geronimo-jta_1.1_spec-1.0.jar • - geronimo-jta_1.1_spec-1.0-tsr.jar • - s2-tiger-2.4.34.jar これらを他のjarファイルが置いてあるところに置いてください. Ex. <インストールフォルダのpath>\doc\imart\WEB-INF\lib\
2.6imartContainer.propatiesの編集 S2JDBCを利用するフレームワークのみSeasar2対応にする Ex.データフレームワークでのみ利用する場合 • serviceContainer=jp.co.intra_mart.framework.base.service.container.ServiceContainerImpl • eventContainer=jp.co.intra_mart.framework.base.event.container.EventContainerImpl • dataContainer=jp.co.intra_mart.framework.base.data.container.DataContainerImpl • #serviceContainer=jp.co.intra_mart.framework.extension.seasar.service.S2ServiceContainer • #eventContainer=jp.co.intra_mart.framework.extension.seasar.event.S2EventContainer • #dataContainer=jp.co.intra_mart.framework.extension.seasar.data.S2DataContainer
2.6imartContainer.propatiesの編集 S2JDBCを利用するフレームワークのみSeasar2対応にする Ex.データフレームワークでのみ利用する場合 • serviceContainer=jp.co.intra_mart.framework.base.service.container.ServiceContainerImpl • eventContainer=jp.co.intra_mart.framework.base.event.container.EventContainerImpl • #dataContainer=jp.co.intra_mart.framework.base.data.container.DataContainerImpl • #serviceContainer=jp.co.intra_mart.framework.extension.seasar.service.S2ServiceContainer • #eventContainer=jp.co.intra_mart.framework.extension.seasar.event.S2EventContainer • dataContainer=jp.co.intra_mart.framework.extension.seasar.data.S2DataContainer コメントアウト コメントイン
3. Ver7.0を使用する場合の留意点 • Ver7.1ではここまでの設定でOK
3. Ver7.0を使用する場合の留意点 • Ver7.1ではここまでの設定でOK • Ver7.0でも同じように設定して動かそうとすると・・・
3. Ver7.0を使用する場合の留意点 java.lang.AbstractMethodError
3. Ver7.0を使用する場合の留意点 • Ver7.0では以下のjarファイルを入替る必要有 • - s2-extention-2.4.36.jar • - s2-framework-2.4.36.jar • 場所はVer7.1でjarファイルを追加した場所と同じ これで動きました!! ※注 iWP等でS2JDBCを利用してシステムを動かしたことが 原因で発生した不具合はサポート対象外です.
まとめ とりあえず今回のLTで言いたかったこと • S2JDBCを使えばかなりDAOの実装が楽になる. • iWPやDebug ServerでもS2JDBCを動かすことは可能 • この原理がわかれば,DAOの自動生成も簡単にできるに違いない…
まとめ とりあえず今回のLTで言いたかったこと • S2JDBCを使えばかなりDAOの実装が楽になる. • iWPやDebug ServerでもS2JDBCを動かすことは可能 • 動かし方の原理がわかれば,DAOの自動生成も簡単にできるに違いない… と思っていた時期が私にもありました
まとめ DAOの自動生成に S2JDBCは 採用しませんでした…
まとめ 理由
まとめ 理由 システムデータソースが利用できなかった・・・ (http://oss.intra-mart.org/study_meeting/2009-11-17/2009-11-17_LT_emooru.pdf)
まとめ 理由 システムデータソースが使用できなかった・・・ (http://oss.intra-mart.org/study_meeting/2009-11-17/2009-11-17_LT_emooru.pdf) でもいつか利用できたらいいなぁ・・・
ご清聴ありがとうございました Special Thanks!! emooruさん