使用Model作为GenericDAO

时间:2012-01-21 21:35:52

标签: hibernate spring-mvc playframework dao

我2年来一直在使用playframework。框架具有“JPA on streoids”功能。我非常喜欢它。

http://www.playframework.org/documentation/1.2.4/5things

这是示例代码:

User connectedUser = User.find("byEmail", connected()).first();
...
connectedUser.delete();
...
connectedUser.save();

这个方法使用了很多辅助方法。其中一些是静态方法。 每个模型文件都扩展了Model类和voila。您可以使用查找,保存,删除,获取...

现在我使用Spring MVC 3.1。我喜欢它的MVC用法。 但连接系统有点复杂。

我读了很多文章。其中一些使用服务层,dao层和模型层。 其中一些只使用dao层和模型层。 有些人正在为每个模型对象以及服务类和服务接口创建DAO接口和DAO类。 其中一些使用通用的DAO类。

事实上,我对所有这些变种感到有些困惑。

  • 为什么我们使用DAO层。单个hibernateUtil类并命名 对于CRUD操作,查询是不够的。
  • 为什么我们不使用播放框架方法?
  • 为什么我们为每个DAO类使用接口?只是实施还不够?
  • 为什么我们使用不必要的服务层?

1 个答案:

答案 0 :(得分:4)

DAO层可用于将数据访问代码与业务逻辑代码隔离开来。当您开始对业务逻辑进行单元测试时,这尤其有用,因为它允许模拟DAO。所有应用程序都不仅仅具有CRUD操作。

接口具有相同的可测试性优势。阅读what reasons are there to use interfaces (Java EE or Spring and JPA),在那里我解释了拥有接口的优势。

服务层是最重要的层。它是用于划分交易的那个。您可以避免使用DAO层,尤其是如果您具有非常简单的类似于crud的数据访问。但服务层至关重要。您不希望在自己的事务中有三个插入和一个更新。请参阅DAO Design Pattern and Servlets,了解我解释服务层如此重要的原因。