在JPA中,有没有办法防止对象被多次实例化?

时间:2014-08-25 19:49:56

标签: java jpa

如果我有像Account这样的类的实例,可能需要防止对应于一个用户帐户的实例同时实例化多次。这可能使用JPA吗?

按照Edwin的建议澄清:在一个系统中有多个账户。当有人登录时,我们可能会实例化该人的帐户,以确定该人拥有的权限。如果系统管理员想要访问同一个帐户,或者在帐户所有者仍在使用它时更改权限,该怎么办?有没有办法防止这种情况或是否有办法通知系统管理员该帐户已被实例化?

1 个答案:

答案 0 :(得分:3)

这取决于你的意思。 JPA实现的工作方式已经保证了当您在给定的事务中向实体管理器请求实体时,您将始终获得相同的实体。

因此,实体与其上下文的存在联系在一起,在JPA中存在不同类型的上下文。

请参阅JPA 2.1 Specification有关实体经理和持久性上下文的第7章。

现在,这不会阻止任何人创建您的类的实例并在他们认为合适时使用它们。或者您在应用程序中有分离的实体。例如,在您持久化新实体之前,它是分离的,而不是在实体管理器的控制之下。

您可以考虑阅读上述相同规范中的第3.2节“实体实例生命周期”。

所以,也许您应该告诉我们您想做什么,我们可以帮助您了解如何做到这一点。而不是给我们你认为的答案。首先介绍一下您认为可以解决的问题,如果您可以阻止JPA提供给定实体的多个/不同实例。