如何测试hibernate泛型dao模式

时间:2012-10-15 15:39:16

标签: java hibernate unit-testing tdd

我正在使用Google Guice和Hibernate开始一个项目,并且在配置数据库访问层的过程中,我对这个过程中的一些疑问感到不安。

我在我的POJO中使用JPA注释,而我的Generic DAO实现使用EntityManager对象与数据库通信。我做了几次“手动”测试,我看到它工作正常,但我更喜欢遵循TDD方法来强化我对这种方法的了解。我不确定在java中测试泛型的最佳方法是什么,甚至不是测试Hibernate Generic DAO模式的最佳解决方案。

我已经阅读了几个解决方案,但我对这些解决方案感到不舒服:

  • 其中一个是创建一个抽象类来测试Generic DAO并使用抽象方法来获取特定的DAO并使实例保持等等。
  • 另一个解决方案是使用抽象类(如前面的解决方案)并使用工厂而不是抽象方法:使用这两个解决方案我不知道是否有一个方法来让实体测试每个案例在我的项目中。
  • 另一个解决方案可能是比通用dao更好地测试特定DAO中的每个功能:我认为这是最糟糕的解决方案,因为在大多数情况下,我将不得不重复大量代码来测试同样的事情。

除此之外,我已经读过,删除DAO层并直接从服务中使用实体管理器可能会更好:我不认为这是最好的方法,因为您将数据库层与服务层混合

有人可以帮我吗?!

1 个答案:

答案 0 :(得分:0)

DAO和entityManager之间的区别在哪里?它们都是数据库层,只是一个不同的抽象层。

为了测试查询等,内存数据库优于模拟完整的数据访问层。