我正在开始一个使用 Google Guice 和 Hibernate 的项目,在配置数据库访问层的过程中,我遇到了几个疑惑。
我在我的 POJO 中使用 JPA 注释,我的通用 DAO 实现使用 EntityManager 对象与数据库通信。我做了几次“手动”测试,我发现它运行良好,但我更喜欢遵循 TDD 方法来强化我对这种方法的了解。我不确定在 Java 中测试泛型的最佳方法是什么,更不确定测试 Hibernate Generic DAO 模式的最佳解决方案。
我已经阅读了几个解决方案,但我对其中一个都不满意:
- 其中之一是创建一个抽象类来测试 Generic DAO,并使用抽象方法来获取特定的 DAO 并让实例持久化等。
- 另一种解决方案包括使用抽象类(如之前的解决方案)并使用工厂而不是抽象方法:对于这两种解决方案,我不知道是否值得使用一种方法来获取实体来测试每种情况在我的项目中。
- 另一种解决方案可能是测试特定 DAO 中的每个功能,而不是通用 dao:我认为这是最糟糕的解决方案,因为在大多数情况下,我将不得不重复大量代码来测试同样的事情。
除此之外,我读到过删除 DAO 层并直接从服务中使用实体管理器可能会更好:我认为这不是最好的方法,因为您将数据库层与服务层混合在一起.
谁能帮帮我?!
请您参考如下方法:
DAO和entityManager的区别在哪里?它们都是数据库层,只是不同的抽象层。
要测试查询等,内存数据库比模拟完整的数据访问层要好。