实体的移动性是什么意思?

时间:2014-06-20 17:28:37

标签: java jpa jpa-2.0

这本书Pro JPA 2必须说明移动实体

  

客户端/服务器和Web应用程序以及其他分布式体系结构   显然是连接中最受欢迎的应用程序类型   世界。承认这一事实意味着承认持久性   实体必须在网络中移动。对象必须能够   从一个虚拟机移动到另一个虚拟机然后再返回,然后   必须仍然可以被应用程序使用。

     

离开持久层的对象称为分离。关键   持久性模型的特性是能够改变分离   实体,然后在返回虚拟时重新附加它们   机。分离模型提供了一种协调状态的方法   被重新附加的实体,以及它所处的状态   变得超脱。这允许实体更改脱机,同时   面对并发性,仍然保持实体一致性。

有人可以帮我解码上面两段中的信息吗?为什么有人需要实体在JVM之间移动?

2 个答案:

答案 0 :(得分:3)

简短的回答是,可能有多个JVM(多个移动设备,多个带有JVM的服务器或其任意组合)。

如果我理解正确,请考虑保存游戏文件的示例。有人拥有一个网站帐户,并在网站上存储了一个保存文件。但该人下载游戏以便他们可以离线播放。

此时的保存文件成为一个'分离的实体'。它已更新为“离线”,并在用户登录网站时重新附加。更新存储在服务器端的实体可能是自动的,或者可能会提示用户(是否要覆盖保存数据?向用户显示两个保存文件和时间戳)。

其他例子可能包括

  • 来自移动设备的健康数据(即使超出无线范围也会更新)
  • 游戏数据
  • evernote /类似的同步服务
  • 备份/恢复服务

答案 1 :(得分:0)

有问题的两个段落描述了JPA中分离对象的性质,并将它们与serializability的概念联系起来。

一旦对象进入分离状态(即不再与entity manager关联),它需要一种方法将自己重新连接到实时会话。如果对象想要将自身附加到实体管理器,则通常使用.merge()操作来完成。

当他们说

时他们的意思
  

对象必须能够从一个虚拟机移动到另一个虚拟机   然后再返回,并且仍然可以被应用程序使用。

如果您要求将对象通过remote interface之类的HTTP发送到另一个应用程序或另一个层,则该对象需要一种在应用程序之间移动的方法能够保持其状态。

实现此目的的方法是序列化对象,然后通过线路发送 - 当在另一端接收它时,使用对象定义重建它。然后,对象需要将自身附加到实体管理器,以便可以保持它。这就是它们对分离对象的可移植性的意义。