我正在使用Google Guice和Hibernate开始一个项目,在配置数据库访问层的过程中,我遇到了一些疑问。
我的POJOs中使用JPA注释,我的通用DAO实现使用EntityManager对象与数据库通信。我进行了几个“手动”测试,并且发现它运行良好,但是我更喜欢遵循TDD方法来强化我的这种方法的知识。我不确定在Java中测试通用类型的最佳方法是什么,更不用说测试Hibernate通用DAO模式的最佳解决方案了。
我已经阅读了几个解决方案,但没有一个让我感到真正舒服:
- 其中之一是制作一个抽象类来测试通用DAO,并使用抽象方法获取特定的DAO和获取要持久化的实例等。 - 另一个解决方案是使用抽象类(如前一个解决方案)并使用工厂而不是抽象方法:对于这两个解决方案,我不知道是否值得拥有一个方法来获取要在项目中每个情况下测试的实体。 - 另一个解决方案可能是在特定的DAO中测试每个功能,而不是在通用DAO中测试:我认为这是最糟糕的解决方案,因为在大多数情况下,我将不得不重复很多代码来测试相同的东西。
除此之外,我还阅读到最好删除DAO层并直接从服务中使用实体管理器:我不认为这是最佳方式,因为您正在将数据库层与服务层混合在一起。
有谁能帮帮我?!
我的POJOs中使用JPA注释,我的通用DAO实现使用EntityManager对象与数据库通信。我进行了几个“手动”测试,并且发现它运行良好,但是我更喜欢遵循TDD方法来强化我的这种方法的知识。我不确定在Java中测试通用类型的最佳方法是什么,更不用说测试Hibernate通用DAO模式的最佳解决方案了。
我已经阅读了几个解决方案,但没有一个让我感到真正舒服:
- 其中之一是制作一个抽象类来测试通用DAO,并使用抽象方法获取特定的DAO和获取要持久化的实例等。 - 另一个解决方案是使用抽象类(如前一个解决方案)并使用工厂而不是抽象方法:对于这两个解决方案,我不知道是否值得拥有一个方法来获取要在项目中每个情况下测试的实体。 - 另一个解决方案可能是在特定的DAO中测试每个功能,而不是在通用DAO中测试:我认为这是最糟糕的解决方案,因为在大多数情况下,我将不得不重复很多代码来测试相同的东西。
除此之外,我还阅读到最好删除DAO层并直接从服务中使用实体管理器:我不认为这是最佳方式,因为您正在将数据库层与服务层混合在一起。
有谁能帮帮我?!