在发送到EntityManager获得的其他层面之前,请始终(深)克隆



当您可以在3层之间发送3层(ui-business-persistance层)时,是否有一个现实世界应用程序的示例?例如,为了简单起见,让它成为实体豆。

我的意思是,如果我的EntityManager是GetReference()并发送给用户,并且我让用户能够对其进行编辑,创建它,而不是在我的代码的任何点上复制?

如果您选择此选项,是否有任何并发或知道的问题?此选项的缺点是什么?

我知道,如果我们包裹对象,这样我们就可以连接,包装并可以将对象传递到一个对象中,也许我们可以将其他属性像肮脏的标志一样附加,但是如果我想保留其他属性简单性吗?还是EntityManagers会弄乱整个事情?(我觉得它们会并且无法处理,例如正确的对象,因此最好将整个持久性和UI层封装并进行深层复制。...)

感谢任何答案。

我在本书中找到了这个答案:Pro JPA 2掌握Java™持久性API

我认为主要原因是对深拷贝实体的并发线程ACC,引用了这一点:

应用程序可能无法直接从多个线程访问实体 虽然它是由持久性上下文管理的。申请可能 但是,选择允许在 他们被超越。如果选择这样做,则必须同步 通过在实体上编码的方法进行控制。并发实体 但是,不建议进行状态访问,因为实体模型 并不能很好地适合并发模式。它将是最好简单地复制实体并将复制的实体传递到其他线程供访问,然后将任何更改合并为持久性上下文需要持久

最新更新