如何在Spring和JPA/Hibernate中实现工作单元?

6

我正在努力理解UOW的概念,以及如何在我的spring/jpa/hibernate应用程序中使用DDD实现它。我将我的方法设置为事务性的,但是如何确保在事务中更改的所有实体都被持久化?是通过使用级联集合还是有其他方法?


你可能还想学习样例DDD应用程序 - http://domaindrivendesign.org/node/42 - Binil Thomas
2个回答

8
Hibernate内部实现了工作单元。也就是说,在事务中对持久化实体所做的所有更改都会自动持久化(除非你使用readOnly = true的事务)。
级联选项用于配置将瞬时游离实体的图形转换为持久状态。 另请参阅:

好的,如果我有一个应用程序服务方法 "@transactional updateUser(User user)",那么在更改用户后就不需要调用repository.store(user)了吗? - Piotr
2
@Piotr:如果User来自事务的外部,可能是“脱离状态”,因此您需要将其merge()到持久性上下文中,以使其成为“持久化状态”。 - axtavt

2
如何确保在事务中更改的所有实体都被持久化?
这是 JPA EntityManager 的默认行为。
请阅读 Java EE 5 教程 本节(一直阅读到“将实体数据与数据库同步”)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接