如果希望控制器能够持久保存对
Child对象的更改,那么传统上您将在服务中拥有一个名为的方法,例如
ChildService.update(Childnewchild),该方法将处理调用正确的DAO以持久化此Child的新版本。
控制器可以自由地为孩子请求服务,更改字段(可能基于某些用户输入)-理智的设计将使控制器对子POJO进行一些工作,然后要求服务保留更改。POJO模型应该对控制器,服务或DAO一无所知,而只是按照您的建议简单地保存数据-
当然,您不希望每次调用
setName()或
setGender()自动导致数据库更新。
相反,控制器和/或服务应获取一个
Child对象,对该对象在其工作单元中进行所需的任何工作,然后请求服务(然后由DAO)保留更改。
验证可以分几层进行-
控制器可能想要验证来自Web用户的任何输入,服务可能想要验证它是否具有有效
Child对象,然后再将其持久化。如果您想以其他功能重用此服务(例如公开REST接口,不同的前端等),则在两层进行某种程度的验证尤其有意义。



