Strutsで複数のDBに接続する

2014.06.04.水
Java技術

覚えている方はお久しぶりです。
初めての方、覚えていない方ははじめまして(?)

常角です。

久々の開発ブログ。
さて、何にしようかと考えて、
最近仕事でやったStrutsで複数のDBに接続しに行く方法にしました。
単体のシステムではあんまりないのですが、複数のシステムを連携させる場合にあり得るシチュエーションかもしれません。

で、早速やり方です。
まず、DBへの接続情報を書き込む
jdbc.dicon
というファイルを同じフォルダ内にコピーして、
jdbc1.dicon
jdbc2.dicon
というファイルを作ります。
(ここのファイル名は別になんでもいいです)
そのそれぞれのファイルに接続したいDBへの接続情報を書き込んでやります。

その後、元々のjdbc.diconファイルを次のように書き換えてやります。


これで、jdbc1とjdbc2の情報を読み込むようにできます。

次です。
jdbc.diconと同じフォルダに
dao.dicon
というファイルが有るはずです。
これをコピって、
dao1.dicon
dao2.dicon
を作りましょう。

で、下のようにjdbc1,jdbc2をインクルードするように設定を変えてやりましょう。
namespaceをdao1,dao2にすることも忘れないで下さい。
特に何もなければ、daoの変更はこれだけでいいです。



1と2で変更が完了したら、元のdao.diconを次のように変更してやりましょう。


jdbc.diconと同じですね。
1と2の両方を読み込め!っていうふうに書き換えてやります。

次、最後です。
customizer.dicon
というファイルが有るはずです。
コンポーネントに「daoCustomizer」ってのがあると思います。
その中に、次のように書き加えてあげてください。


上の方で作ったdao1とdao2を追加してやります。

更に次のようなコンポーネントを追加してやります。


これが、どんなことを行っているかというと、
sample.daoの中にある、すべてのdaoファイルの処理を実行する場合、dao1(jdbc1)の接続情報を使って、DB接続を行う。
但し、sample.dao.anotherのみ、対象外にする
sample.dao.anotherの中にある、すべてのdaoファイルの処理を実行する場合、dao2(jdbc2)の接続情報を使って、DB接続を行う。
ということです。
(当たり前ですが、お使いのプロジェクトに合わせて設定を変えてやってくださいね)
この設定自体は、おそらく元々あるはずです。それを接続情報が2つに別れたから、設定も2つに分けるというイメージです。
上記の例では、daoパッケージ内のanotherパッケージの中のDAOファイルのみ2の方の設定で接続する。
としていますが、もちろん
dao.oneパッケージをjdbc1で接続。
dao.twoパッケージをjdbc2で接続。
というふうに分けることもできます。

これで以上、複数のDBに接続しに行くようになっているはずです。
ややこしいようで、終わってみれば結構簡単だったりします。

やったことないですが、多分同じ要領で接続先を3つにも4つにも増やせるかと思います。
(そんなことをするシステムなんてどうかと思いますが)