Spring勉強会に行ってきました。
SpringJDBC、SpringJPA
SpringJDBC
TemplateクラスとSupportクラスというのを使う。
Templateはデータソースをプロパティにセットしてくれて、
プログラマ的にはSupportクラスを使えば、Templateを扱うのが簡単になる。
(らしい。こればっかりはやってみないとわかりません)
トランザクションは設定ファイルのみの制御でできるし、
型のキャストもいい感じにやってくれるっぽい。
SpringがJDBCのコードをどう扱っているのかが気になりました。
フェッチのサイズ変えられるようなインタフェースがあるのか、とか。
カーソル開きっぱなしで1件1件フェッチしたりできるのか、とか。
個人的にはSQLはバンバン書きたい派なので。
こういうのもあるんだな〜といった印象。
ライトニングトークス
SpringExperienceに行ってきたよ
SpringExperienceというアメリカで開催された
Springフレームワークに関するカンファレンスに行ってきたという話。
参加者は700人くらいだったそう。
Spring単体の講演だけではなく、
Hibernateの人や、Sunの人とかの講演もあったそうだ。
世界中からいろんな人が来ていたらしい。
世界のGeekの中では、
"日本=Ruby"というイメージらしい。
海外行くときはRubyを勉強してから行くようにした方が
よいかもしれません。
Google Guice
Googleが作ったDIコンテナである、Google Guice(ジュース)の話。
とにかく型付けにこだわりがあるらしく。
全てがソースコードとアノテーションでできている。(XMLファイルはなし)
AOPアライアンスに準拠。
インジェクションする時は@injectionっていうアノテーション
バインドするときはbind(Hoge.class).to(Hage.class)って感じでHogeをHageにバインド
でもってIngector.getInstance(Hoge.class)って感じでHogeのインスタンスを取得
こんな流れみたい。
大人数で固い開発をするために、とにかくタイプセーフで。
そんなノリらしい。
SpringでDAO
SpringでS2DAOを動かす〜なんていう試み。
使ったことがないのでよくわからないが、
Hibernateよりも、S2DAOはいろんなところで
開発者に優しい工夫がされているようだ。
EasyMockを使った、実際データベースにアクセスせずに
モックを使ってDBアクセスまわりの自動テストをやろうというデモ。
大規模な開発になると、ビジネスロジックを書く人と、
データアクセスまわりを書く人がわかれるらしい。
デーアクセスまわりができてないから、
ビジネスロジックが書けませんでしたっていう、
チーム間の依存性を下げたり、
あとは、全ての自動テストを流す際に、
非常に時間がかかるので、現場でそういう工夫をしている、と。
自分が今までやってきた開発は、
機能ごとに人がアサインされていたので、あまりイメージ湧かず。
ビジネスロジックわかってないやつに、SQL書けるのか?とか。
それこそ一発のSQLで取ってこれるのに、
設計書に2回クエリ投げるって書いてあったら、
そうしなきゃイケなくなっちゃうんじゃないか?とか思ったり。
O/Rマッパーを使って、大きなテーブルから全レコードを取ってくる際に、
Finderで大きなListオブジェクトを扱うことになり、
OutOfMemoryエラーが出てしまうのを回避するために、
Iteratorというメソッドを使いましょうといったTipsの紹介も。
他には、MySQLではPreparedStatementが使用できず、
SQLインジェクションに注意が必要なんていう話もありました。
感想
すごい時代に取り残されているような感じがしました。
参加している人達が実感を持って、
質問したり、それにうなずいたりしているところに、
結構ポカーンとしてしまいました。
JNDIからデータソースひっぱってきたり、
ResultSetMetaDataを使って、
カラムの名前で取ってきたデータをコレクションにつっこんだり、
トランザクションの管理をフレームワークの中に隠蔽したり、
そういう実装を今までしたことがあるので、
どこら辺が便利で、どういう実装になっているかは大体把握できたが、
なかなか敷居は高いんじゃないかと思いました。
ゴールデンウィークあたりで1回動くもの作って、
次の勉強会も出てみたいなと思いました。