3

我正在使用 Google Guice 和 Hibernate 开始一个项目,在配置数据库访问层的方式上,我在这个过程中遇到了几个疑问。

我在 POJO 中使用 JPA 注释,而我的 Generic DAO 实现使用 EntityManager 对象与数据库进行通信。我做了几个“手动”测试,我发现它运行良好,但我更喜欢遵循 ​​TDD 方法来强化我在这种方法中的知识。我不确定在 java 中测试泛型的最佳方法是什么,更不用说测试 Hibernate Generic DAO 模式的最佳解决方案。

我已经阅读了几种解决方案,但我对它们都不太满意:

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

除此之外,我读到最好删除 DAO 层并直接从服务中使用实体管理器:我认为这不是最好的方法,因为您将数据库层与服务层混合在一起。

有谁能帮帮我吗?!

4

1 回答 1

0

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

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

于 2012-10-16T12:24:12.213 回答