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さん