[java] 単一のDAO&汎用CRUDメソッド(JPA / Hibernate + Spring)


1 Answers

「DAO繰り返さないでください」という記事に基づいて、私たちはこの種のテクニックを長年にわたって使っていました。 大きなミスをしたことを知った後、私たちは常にパターンの問題に苦労しました。

HibernateやJPAなどのORMツールを使用することで、DAOとサービスレイヤを別々に考える必要はありません。 トランザクションのライフサイクルとエンティティクラスのロジックを知っているので、サービスクラスからEntityManagerを使用することができます。

単純にentityManager.saveEntity代わりにmyDao.saveEntityを呼び出すと何分も節約できますか? いいえ、何もしませんが、EntityManagerのラッパーになる不要なdaoクラスがあります。 EntityManager(または休止状態のセッション)の助けを借りて、サービスクラスに選択項目を書くことを恐れないでください。

もう1つ注意してください:サービス層の境界を定義し、プログラマーにEntityクラスを返す、または待たせないようにしてください。 UIまたはWS層プログラマは、DTO-sについてのみエンティティクラスについて全く知ってはいけません。 エンティティオブジェクトには、ほとんどのプログラマが知らないライフサイクルがあります。 エンティティオブジェクトをセッションデータに格納し、それを数秒後または数時間後にデータベースに更新しようとすると、本当に深刻な問題が発生します。 あなたはそれをしないかもしれませんが、パラメータ・タイプを知っているサービス・レイヤーのタイプを返すUIのプログラマーは、コード行を節約するだけです。

Question

以前の質問、 DAOとサービス層(JPA / Hibernate + Spring)に続いて、JPA / Hibernate、Spring、Wicketを使用するアプリケーションでは、データ層に(少なくとも最初は)単一のDAOを使用することに決めました。 一般的なCRUDメソッドの使用が提案されましたが、私はJPAを使用してこれを実装する方法があまりよく分かりません。 あなたは私に例を与えたり、これに関するリンクを教えてくれませんか?







Related