工作单元模式的验证策略

时间:2010-06-08 19:37:07

标签: java validation jpa unit-of-work

当我使用unit of work pattern(使用JPA)时,我从存储库中获取一个实体,对其进行修改并将隐含的工作单元中的修改保存到数据库中。

现在我想知道如何使用工作单元模式执行验证。如果我将更改(从用户输入)应用到域对象并在此之后进行验证,则即使验证失败,也会更改该对象的值。避免将具有非法状态的对象写入数据库的方法是什么?退回工作单位?

OOP的目标之一是对象监视自己的状态,以便它们永远不会接受非法的值。对于这种方法,我不得不抛出异常,它与上面的bean验证(和弹簧验证)方法相反。但也许它更简单,更好。

您将使用哪种验证策略(在域驱动设计中)?

1 个答案:

答案 0 :(得分:2)

  

避免将具有非法状态的对象写入数据库的方法是什么?退回工作单位?

如果您使用Bean Validation API,它将抛出异常并且不会保留更改(如果启用,则验证应该在PrePersistPreUpdate的最后阶段进行,和PreRemove生命周期事件)。

使用JPA 2.0,只需在类路径上放置一个Bean Validation实现。

使用JPA 1.0时,请参阅this previous answer