私は Google Guice と Hibernate を使用してプロジェクトを開始していますが、データベース アクセス レイヤーを構成する方法で、このプロセスに沿っていくつかの疑問に悩まされました。
POJO で JPA アノテーションを使用しており、Generic DAO 実装では EntityManager オブジェクトを使用してデータベースと通信しています。私はいくつかの「手動」テストを行い、正常に機能していることを確認しましたが、TDD 方法論に従って、この種の方法論に関する知識を強化することを好みます。Java でジェネリックをテストする最善の方法は何か、Hibernate Generic DAO パターンをテストするための最善の解決策は何かわかりません。
私はいくつかの解決策を読みましたが、どれも本当に快適ではありません:
- それらの 1 つは、ジェネリック DAO をテストする抽象クラスを作成し、抽象メソッドを使用して特定の DAO を取得し、インスタンスを永続化するなどです。
- もう 1 つの解決策は、(前の解決策のように) 抽象クラスを使用し、抽象メソッドの代わりにファクトリを使用することです。 .
- 別の 1 つの解決策は、一般的な dao よりも特定の DAO のすべての機能をより適切にテストすることです。ほとんどの場合、同じことをテストするために多くのコードを繰り返さなければならないため、これは最悪の解決策だと思います。
それとは別に、DAOレイヤーを削除してサービスから直接エンティティマネージャーを使用する方が良いかもしれないと読みました.データベースレイヤーとサービスレイヤーを混在させているため、これが最善の方法だとは思いません.
誰でも私を助けてくれますか?!