java在hibernate/jpa实体类中定义save方法是一种好的约定吗?
我有一个hibernate实体/模型类,如下所示
class User{
private Integer id,
Private String name,
private String description
//getters and setters
public void Save(this){
}
}
在这个类声明中定义save方法以及setter和getter是一种好的约定吗?这样使用是否有任何好处,例如避免重复记录
# 1 楼答案
不,那不是一个好的惯例。通常,您有一个名为DAO(数据访问对象)的特殊层,负责保存/获取/删除。。。你的实体。域模型(即您的实体)只表示数据,DAO层处理它们。使用JPA这样强大的规范,您可以将DAO层与业务逻辑层(EJB/Beans/CDI)合并,但这可能是另一个讨论的主题。当然,您的实体中可能有一些验证内容,例如一个方法getLoggingString(),它不会持久化,但会返回要记录的实体的字符串版本
PS:您编写的方法对该签名没有什么意义:您需要一个保存自身的
public User save()
方法,或者需要一个static public User save(User userToSave)
一些参考资料: