是直接和金属,不会有
javax.transaction.Synchronization问题登记EntityManager的对象,直到你真正 使用
它 的 交易。
我们在app-server-
land中将创建这些对象之一来执行
flush()并将其注册到
javax.transaction.TransactionSynchronizationRegistry或
javax.transaction.Transaction。除非有活动的交易,否则无法完成此操作。
这就是它的长短。
是的,应用服务器可以很好地保存它提供给有状态Bean的资源列表,并自动将其注册到有状态Bean可能启动或参与的每个事务中。其缺点是,您完全失去了决定执行哪些操作的能力在其中进行交易。也许您有2或3个不同的事务要在不同的持久性单元上运行,并在扩展持久性上下文中汇总非常特定的事务的工作。这实际上是一个设计问题,应用服务器应将此类决策留给应用本身。
您在交易中使用它,我们将其注册在交易中。那是基本合同。
旁注,根据底层EntityManager的处理方式,对EntityManager的 任何 持久调用都 可能
足以在事务结束时引起完全刷新。当然,这
flush()是最直接,最明确的方法,但一个
persist()甚至一个
find()都可以。



