在Spring和Hibernate中结合DAO和实体

时间:2017-06-24 20:47:48

标签: spring hibernate dao

我想知道是否可以在单个类中组合DAO和Entity。 e.g。

在rails

如果我有一个名为user的表,那么将有一个ActiveRecord用户,通过使用该类,我可以访问与DB和用户相关的访问方法,即它有两个方法user.name(访问对象属性)和user.save / User.get_all方法(管理数据库交互)在同一个类

在Spring / Hibernate配置中

我有两件事:DAO和实体

实体:我有一个User类,它是一个实体,并将Table映射为POJO,因此我可以访问与单个用户相关的方法,例如user.getName()

DAO:我有一个DAO,其中有数据库交互,例如userDAO.save(user)userDAO.get(id)

问题:

我想知道我是否可以创建单个User类并在内部定义User属性和getter / setter以及DB交互,这样我就可以单独作为两个类,即user.getName()(作为POJO)和{{1} } / User.get(id)(作为DAO)。

这种方法是否可行,如果我从这种方法开始,为什么我可能会遇到并发症?

1 个答案:

答案 0 :(得分:1)

它被称为Active Record Pattern。这是关于JPA主题的文章。 Active Record Pattern 。和示例https://github.com/ActiveJpa/activejpa

  

这种方法是否可行,如果我从这种方法开始,为什么我可能会遇到并发症?

它的:

  1. Cohesion & Coupling

  2. 如果是真正的项目,支持它可能会成为问题

  3. 当你有20个实体时,很难决定将方法放在哪个实体中,并找到你需要的方法,因为它可能在很多地方

  4. 当您不使用活动记录模式时,您可以与网络层共享实体,活动记录实体不能序列化。

  5. 代码变得越来越大