コネクション/トランザクションの管理

まず、コネクション/トランザクションの管理についてはSeasar2を使うという時点であまりやることがないのでスルー。便利だ。

ただ、今後、複数のデータソースをひとつのDAOで使い分けるしくみをサポートすることになるかもしれない。
これは、データセンターか何かにシステムを一個どーんと置いておき、複数の会社からアクセスするというような構成の場合に必要になる。
データソースで会社を分けずにデータ自体に識別子を付けてあげれば良いじゃんという気がしなくもないが、いろんな事情で別にしたい場合があるようだ。
DIコンテナ(というかそれに付属のAOP機能)でコネクションの管理をする場合、DAOごとに別のデータソースを設定することができても、単一のDAOで動的にデータソースをハンドリングすることができない(会社数が少し多いので会社ごとにDAO自体を切り替えるというやり方は難しい)。
静的なファイルで依存関係を設定しているので、当たり前といえば当たり前の制約だし、そもそも、自前で簡単に実装できるので誰も必要性を感じていないのかもしれない。
でもね、せっかくDIコンテナにコネクション/トランザクションの管理を任せているのだから、自前のコネクション実装は避けたいなぁと思ってみたり。


……ん?
diconファイル内にあるXADataSourceのプロパティの部分にOGNL式を書けば可変にできるかも?
OGNL式で特定のメソッドを呼んで、そのメソッド内でSessionからログイン時に保持した会社情報を取得するとか。
んー、そんなんできちんと動作するのか?ちょっと怖い。


冒頭で「スルー」とか言っておきながらまったくスルーしてないな。