java - 工作单元模式的验证策略

标签 java validation jpa unit-of-work

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

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

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

您会使用什么验证策略(在领域驱动设计中)?

最佳答案

What is the way to avoid writing an object with illegal state to the database? Roll back the unit of work?

如果您使用 Bean Validation API,它会抛出异常并且更改不会被持久化(如果启用,验证应该发生在 PrePersist 的最后阶段, PreUpdatePreRemove 生命周期事件)。

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

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

关于java - 工作单元模式的验证策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3000637/

相关文章:

java - 从串口读取错误值

java - 使用 Writer 将 int 写入文本文件

validation - 如何验证symfony2实体集合中的唯一实体

c# - 在 C# 中验证列表

java - spring mvc页面无绑定(bind)

java - 在 Android 中映射空间数据

java - 我应该如何显示 ICellEditorValidator 检测到的验证错误?

java - JP QL - 一对多关系中的过滤结果

java - 调用EJB方法时出现NullPointerException

java - 如何让 Eclipse JPA(大理)使用另一个项目的 persistence.xml?