【发布时间】:2012-10-05 15:10:33
【问题描述】:
我正在使用 Google Guice 和 Hibernate 开始一个项目,在配置数据库访问层的方式上,我在此过程中遇到了几个疑问。
我在 POJO 中使用 JPA 注释,而我的通用 DAO 实现使用 EntityManager 对象与数据库进行通信。我进行了几次“手动”测试,发现它运行良好,但我更喜欢遵循 TDD 方法来强化我在这种方法中的知识。我不确定在 java 中测试泛型的最佳方法是什么,更不用说测试 Hibernate Generic DAO 模式的最佳解决方案了。
我已经阅读了几个解决方案,但我对它们都不太满意:
- 其中之一是创建一个抽象类来测试通用 DAO 并使用抽象方法来获取特定的 DAO 并让实例持久化等。
- 另一种解决方案包括使用抽象类(与之前的解决方案一样)并使用工厂而不是抽象方法:使用这两种解决方案,我不知道是否值得拥有一种方法来获取一个实体来测试每个案例在我的项目中。
- 另一种解决方案可能是测试特定 DAO 中的每个功能而不是通用 dao:我认为这是最糟糕的解决方案,因为在大多数情况下,我将不得不重复大量代码来测试同样的事情。
除此之外,我读到最好删除 DAO 层并直接从服务中使用实体管理器:我认为这不是最好的方法,因为您将数据库层与服务层混合在一起.
谁能帮帮我?!
【问题讨论】:
标签: java hibernate unit-testing tdd