spring DataAccessException をサービス層で直接使用できますか? フレーム ワーク クラスをサービス レイヤーに広めるのに、これは適切なプラクティス/設計ですか?
また
daoレイヤーでDataAccessExceptionをキャッチして、より一般的な例外として再スローする必要がありますか?
spring DataAccessException をサービス層で直接使用できますか? フレーム ワーク クラスをサービス レイヤーに広めるのに、これは適切なプラクティス/設計ですか?
また
daoレイヤーでDataAccessExceptionをキャッチして、より一般的な例外として再スローする必要がありますか?
DAOレイヤーがその例外をスローしても問題ないと思います。サービス層は永続層について既に認識しているため、追加の依存関係は作成されません。
DataAccessException (DAO レイヤーからスローされた) をアプリケーション固有の例外階層 (サービス レイヤー内) にマップ/ラップして、依存/呼び出しレイヤーがアプリケーション固有の例外クラスを処理するだけで済むようにすることをお勧めします。
個人的には、サービス レイヤーですべてのチェック済み例外をキャッチし、独自の ServiceExceptions をスローして、キャッチした例外でそれらを初期化します。このように、例外情報は失われず、コントローラーは低レベルの例外を処理する必要がありません。ただし、DAO レイヤーでこれを行う必要はありません。
「Effective Java」(J. Bloch) には、例外処理に関する非常に優れた章があり、この本の残りの部分と同様に、よく読んでください。項目 61 は、この質問を扱います。
http://books.google.de/books/about/Effective_Java.html?id=Ft8t0S4VjmwC