Jun Okazaki - OPEN INTRA-MART

Download Report

Transcript Jun Okazaki - OPEN INTRA-MART

S2JDBCをintra-mart上で
動かしてみた
Jun Okazaki
メニュー
S2JDBCって?(簡単な説明)
IMでS2JDBCを使うためには(iWP7.1)
1.
2.
1.
2.
3.
3.
必要な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-JavaEE Framework のデータフレームワーク)
・Model
・DAOインタフェース
・DAO
Select文
全件取得
PreparedStatement無し
S2JDBC利用
・Model
・DAOインタフェース
S2JDBCって?(簡単な説明)
従来(ex. im-JavaEE Framework のデータフレームワーク)
・Model
・DAOインタフェース
・DAO
複雑な操作になってもより簡単に設定できる!!
Select文
・データ取得開始位置の設定
全件取得
・取得件数の設定
PreparedStatement無し
・ResultSetとかも必要ない
・テーブル結合も関数での定義だけ
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ファイルを追加する
ファイルの追加,編集
1.
2.
1.
2.
3.
4.
5.
6.
3.
s2jdbc.diconを追加
app.dicon編集
jta-10.dicon編集
Daoクラス情報を設定するdiconの作成
ダイアレクトの設定(使用するデータベースの設定)
imartContainer.propatiesの編集
Ver7.0を使用する場合の留意点
IMでS2JDBCを使うためには(Ver7.1)
手順
必要なJARファイルをそろえる
ファイルの追加,編集
1.
2.
s2jdbc.diconを追加
2.
app.dicon編集
S2Dao,S2JDBCの設定と同じなので
3.
jta-10.dicon編集
IM独自の設定が必要になる部分のみ説明
参照(http://s2container.seasar.org/2.4/ja/s2jdbc_setup.html)
4.
Daoクラス情報を設定するdiconの作成
5.
ダイアレクトの設定(使用するデータベースの設定)
6.
imartContainer.propatiesの編集 (注意書きのみ)
1.
3.
Ver7.0を使用する場合の留意点
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.6 imartContainer.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.6 imartContainer.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を使用する場合の留意点
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/200911-17_LT_emooru.pdf)
まとめ
理由
システムデータソースが使用できなかった・・・
(http://oss.intra-mart.org/study_meeting/2009-11-17/200911-17_LT_emooru.pdf)
でもいつか利用できたらいいなぁ・・・
ご清聴ありがとうございました
Special Thanks!!
emooruさん