在hibernate / jpa实体类中定义save方法是一个很好的约定吗?

时间:2014-03-08 02:27:08

标签: java hibernate jpa

我有一个hibernate实体/模型类,如下所示

class User{
  private Integer id,
  Private String name,
  private String description

  //getters and setters

   public void Save(this){
  }
}

在此类声明中定义save方法以及setter和getter是一个很好的约定吗?我们是否有使用这样的好处,例如避免重复记录?

1 个答案:

答案 0 :(得分:0)

不,这不是一个好的约定。通常你有一个名为DAO(数据访问对象)的特殊层,它关心保存/获取/删除......你的实体。域模型(即您的实体)仅表示数据,并且存在与其一起使用的DAO层。使用JPA这样强大的规范,您可以将DAO层与业务逻辑层(EJB / Beans / CDI)合并,但这可能是另一个讨论的主题。当然,您可以在实体中进行一些验证,或者例如没有持久化的方法getLoggingString(),但返回要记录的实体的String版本。

PS:你写的方法对于那个签名没什么意义:你需要一个public User save()方法来保存自己,或者你需要一个static public User save(User userToSave)

一些参考文献:

  1. DAO
  2. Should you have a separate DAO layer (i.e not merged with your business layer)?