- - PR -
DataSourceの扱いについて
1|2|3
次のページへ»
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-11-05 14:41
いつもこの会議室で勉強させていただいています。
現在開発中のプロジェクトにおいて、 DataSourceを使用しているのですが、 DataSourceをJNDIからlookupしてくる処理を どこに書くべきか迷っています。 現在はSQL文を実行するメソッド内で ソース一部抜粋
という感じで各メソッドの中で毎回取得しています。 このメソッドからはSQLExceptionとNamingException をthrowしています。 いま考えているのは以下の内容なのですが、 あるクラスAAAにstatic、finalな変数としてDataSourceを 定義して、各メソッドではそれを使用する。
で各メソッドのConnection取得部分では conn = AAA.getConnection(); とします。 これでSQLを実行するメソッドでの処理が少なくなり NamingExceptionも投げなくてすむと考えています。 このような考え方はどうなのでしょうか。 皆様のご意見をいただければ幸いです。 また、皆様はどのようにDataSourceを扱われていますでしょうか? よろしくお願いします。 | ||||||||
|
投稿日時: 2003-11-05 14:55
ServiceLocator というパターンが参考になるかもしれません。
http://java.sun.com/blueprints/corej2eepatterns/Patterns/ServiceLocator.html | ||||||||
|
投稿日時: 2003-11-05 14:56
DataSourceのルックアップは通常、initの中で行います。 | ||||||||
|
投稿日時: 2003-11-05 15:14
ご返事ありがとうございます。
>インギさん パターンについては勉強不足でして、 これから勉強していきたいと思います。 >takuさん init()メソッドはServletのinit()メソッドのことでしょうか。 その場合、lookupしたDataSourceはどこに保持されるのでしょうか。 勘違いがありましたらご指摘下さい。 | ||||||||
|
投稿日時: 2003-11-05 15:27
Service Locator パターンをざっと(ですが) 見てみました。 このパターンを用いた場合、SQLを実行するメソッドは ServiceLocatorクラスに対してGetServiceメソッドを 呼び出し、ServiceLocatorはInitialContextの lookupを呼び出すことになると思いますが、 そうなった場合、SQLを実行するメソッドで毎回lookupを おこなうのと結果的には同じことになるのでしょうか。 lookupした結果のDataSouceを保持することに あまり意味はないのでしょうか。 よろしくお願いします。 | ||||||||
|
投稿日時: 2003-11-05 16:35
こんばんは。
もしサーブレットのinitメソッドだったら、 ServletContextに格納するのだろうか? もし業務ロジック層がServletContextから DataSourceを取得するなら Web層と密接に関連することになる。 それともサーブレットのインスタンス変数として保持するのだろうか? その場合サーブレットから業務ロジックへデリゲートする時に パラメータとしてDataSourceを渡すのだろうか? せっかくJNDIを用いている意味は? 単にコネクションプーリングを利用するためだけということなのか? 業務ロジックがEJBで実装されている場合は? 普通はサーブレットのinitメソッドでやるのだろうか? 普通とは自分の周りではという意味なのだろうか? いろいろと想像したら、何故か笑ってしまった^^ | ||||||||
|
投稿日時: 2003-11-05 17:03
これは明らかな誹謗中傷ではないでしょうかね。 あなたが”笑ってしまった”って言われたらどう感じますか? EJBを使っていて、DataSourceを使用しますか? ぷかりんさんは、JNDI自体について質問されていますか? JNDIからルックアップするには時間がかかるから、 毎回行うとパフォーマンスが悪くなります。 だから、Servletのinitでやるんです。 ちなみに、某I○M社の講習用のテキストでもそうなってましたよ。 (以前、仕事で同社のSEから資料として渡されたものです) | ||||||||
|
投稿日時: 2003-11-05 17:22
takuさん>
未熟者の私の為にお気遣いいただきありがとうございます。 takuさんのお書きになっている内容ですと、 Servletのinit()メソッドでlookupを行い ビジネスロジックには取得したDataSourceを 渡すことになるのでしょうか。 (まちがっていたらすみません) そうすると、lookupの回数はrequestが発生した 回数となるので各メソッドでlookupするより パフォーマンス的に良いということであっていますか? その場合、最初の文章で書かせていただきました あるクラスAAAに持つというのは、各メソッドから lookupするより良いことになると思いますが、 皆さんどう思われまでしょうか。 とまとさん> とまとさんが普通と考えられている内容は 今の私には理解できていないのかもしれません。 できれば、とまとさんがDataSourceをどのように あつかっておられるかをお聞かせ頂けないでしょうか。 | ||||||||
1|2|3
次のページへ»
