2
当我使用unit of work pattern(与JPA)时,我从存储库中获取一个实体,对其进行修改并将修改隐含地保存到数据库中。工作单元模式的验证策略
现在我想知道如何使用工作单元模式进行验证。如果我将更改(从用户输入)应用到域对象并在其后进行验证,则即使验证失败,该对象的值也会更改。避免用数据库写非法状态的对象的方法是什么?回滚工作单元?
面向对象的目标之一是,对象监视自己的状态,以便他们永远不会接受非法值。对于这种方法,我不得不抛出异常,这与上面的bean验证(和spring验证)方法相反。但也许它更简单,更好。
你会使用什么验证策略(在域驱动设计中)?
要添加到答案,我很确定jpa(或hibernate)有一些非常具体的警告,反对在setter中使用数据验证。 “在返回之前我们如何初始化对象是我们自己的事情,并且可以不止一次地调用setter”。 – 2010-06-08 20:01:50