2011-03-24 72 views
4

方法当创建playramework的模型中,我们可以使用保存()或_save()方法。为什么这两种方法在框架中都是可用的,原因是什么? (在这种情况下,他们也是这样做的 - 将对象保存到数据库)。save()和_save()模型在playframework

我为什么问这样的:它做一些验证时,我已经使用save()方法,但我的课程结束后,用户可以使用_save(),如果他想救未经验证。所以我问自己为什么有两种方法都是公开的。

我处理这样的:问题是有找到地方 使得验证,同时节省。在 事实上,我已经使用 @PrePersist anotation处理了这个问题,当我想确定 验证代码在持久时将被调用 时,在save()附近的某些方法 。所以,现在我确定与 save()和_save():)

回答

5

其实,看的代码保存():

/** 
* store (ie insert) the entity. 
*/ 
public <T extends JPABase> T save() { 
    _save(); 
    return (T) this; 
} 

因此,简单地调用_save()和返回本身为了连锁呼叫。
_save是包含真实业务逻辑的功能。
保存对于活动记录设计来说只是一个更实用的外观。
为什么_save是公开的而不是例如保护?我不知道。

_save()可以没有任何问题IMO调用,但它返回void。这一切;)

+1

没错。对我而言,如果这些方法中的某些方法能够得到保护,那将更合乎逻辑。然后,我可以使用一种方法进行验证,而其他方法没有验证,没有人可以在没有验证的情况下使用该方法,这是合理的。 – ses 2011-03-24 13:08:28

+1

可能有一个原因,但只有一位玩家可以告诉我们;)。无论如何,在Java中受保护的限制性很强,并且Java中没有朋友类,所以我想人们倾向于不使用保护来保持所有方式的打开。 – mandubian 2011-03-25 09:57:40

+1

问题在于找到保存时进行验证的地方。事实上,我已经使用@PrePersist anotation为save()附近的某个方法处理了这个问题,当我想确保验证代码在持久时会被调用。所以现在我可以保存()和_save():) – ses 2011-03-26 11:02:18