1

It's good practice to use AOP for opening and closing DB connections? I want to use AOP in my DAO classes.

For example, inside method public User createUser(String name) I don't want to write code like Connection.open() and Connection.close(), I want to do it automatically, using aspects.

4

3 に答える 3

1

メソッドとAPIを使用しているユーザーが、メソッドが接続を初期化し、さらに重要なことに、後で接続を閉じることを認識している限り、これを行うのは完全に理にかなっています。ただし、考慮が必要なことがいくつかあります。

APIの一貫性について考えてください。すべてのメソッドが接続を開いたり閉じたりしますか?そうでない場合は、なぜそうしないのか、APIを使用している人々にそうしないことを明確にするために何をすべきですか?

エラー処理を考慮することを忘れないでください。スローされた例外などのエラーが発生した場合、メソッドが終了した後の接続の状態は明確である必要があります。

再入可能性を念頭に置いてください。メソッドを複数のスレッドから実行でき、それがグローバル状態に影響を与える場合、災害のレシピに危険なほど近づいています。安全を確保し、理解しやすくします。

ちなみに、各メソッド呼び出しの後に接続を閉じることを考え直してください。データベースに行を追加するたびに接続を開いたり閉じたりするのは意味がありますか?パフォーマンス面では、接続を再利用してさらにクエリを実行する方が合理的です。

于 2012-12-07T09:07:33.667 に答える
0

Web アプリケーションの場合は、セッションごとのリクエスト パターンを使用することをお勧めします。これを行うには、HttpModule または ActionFilter を使用できます。これは、サードパーティの AOP フレームワークを使用しない AOP アプローチであると考えています。

参照:情報隠蔽に焦点を当てながら、プロジェクトで堅牢なリクエストごとのセッション パターンを実装するにはどうすればよいですか?

于 2012-12-11T16:40:43.187 に答える
0

Hibernate や Eclipselink などの ORM を Spring および Transactions / AOP と組み合わせて使用​​すると、すべてが処理されます。

優れた永続性フレームワークを使用して Connection.open を記述する必要はありません。最近はたくさんの選択肢があります。

Java では、ロギング、セキュリティ、キャッシングなどの面でアスペクトが非常に重要です。しかし、永続化に関することは永続化ライブラリに任せます。彼らは信じられないほど成熟しており、非常に信頼できます。

于 2012-12-07T22:14:32.523 に答える