3

私は Google Guice と Hibernate を使用してプロジェクトを開始していますが、データベース アクセス レイヤーを構成する方法で、このプロセスに沿っていくつかの疑問に悩まされました。

POJO で JPA アノテーションを使用しており、Generic DAO 実装では EntityManager オブジェクトを使用してデータベースと通信しています。私はいくつかの「手動」テストを行い、正常に機能していることを確認しましたが、TDD 方法論に従って、この種の方法論に関する知識を強化することを好みます。Java でジェネリックをテストする最善の方法は何か、Hibernate Generic DAO パターンをテストするための最善の解決策は何かわかりません。

私はいくつかの解決策を読みましたが、どれも本当に快適ではありません:

  • それらの 1 つは、ジェネリック DAO をテストする抽象クラスを作成し、抽象メソッドを使用して特定の DAO を取得し、インスタンスを永続化するなどです。
  • もう 1 つの解決策は、(前の解決策のように) 抽象クラスを使用し、抽象メソッドの代わりにファクトリを使用することです。 .
  • 別の 1 つの解決策は、一般的な dao よりも特定の DAO のすべての機能をより適切にテストすることです。ほとんどの場合、同じことをテストするために多くのコードを繰り返さなければならないため、これは最悪の解決策だと思います。

それとは別に、DAOレイヤーを削除してサービスから直接エンティティマネージャーを使用する方が良いかもしれないと読みました.データベースレイヤーとサービスレイヤーを混在させているため、これが最善の方法だとは思いません.

誰でも私を助けてくれますか?!

4

1 に答える 1

0

DAOとentityManagerの違いはどこですか? それらは両方ともデータベース層であり、異なる抽象化層です。

クエリなどをテストするには、完全なデータ アクセス レイヤーをモックするよりも、インメモリ データベースの方が適しています。

于 2012-10-16T12:24:12.213 に答える