Java-在客户机-服务器数据库之间同步不同的实体(JPA2+;EJB3)
有人能帮我吗 我试图在N个“客户机”数据库和1个大的“服务器”数据库(类似于存储库/备份数据库)之间实现同步。 没关系,我有办法让他们的同步正常 但是,有人要求“服务器”也是一个“客户端”应用程序,具有相同的Java类、模型、实体、业务等 我正在试图找到一个解决方案,该服务器数据库保存来自所有客户端的所有数据库内容,而无需对我的实体进行重大更改(因为我也需要在客户端上应用) 这是我尝试过的一个例子,但如何在JPA上实现它并通过EJB远程实现序列化却没有成功Java-在客户机-服务器数据库之间同步不同的实体(JPA2+;EJB3),java,database,jpa,ejb,data-synchronization,Java,Database,Jpa,Ejb,Data Synchronization,有人能帮我吗 我试图在N个“客户机”数据库和1个大的“服务器”数据库(类似于存储库/备份数据库)之间实现同步。 没关系,我有办法让他们的同步正常 但是,有人要求“服务器”也是一个“客户端”应用程序,具有相同的Java类、模型、实体、业务等 我正在试图找到一个解决方案,该服务器数据库保存来自所有客户端的所有数据库内容,而无需对我的实体进行重大更改(因为我也需要在客户端上应用) 这是我尝试过的一个例子,但如何在JPA上实现它并通过EJB远程实现序列化却没有成功 @Entity @Table(
@Entity
@Table(name="crud_sync")
public class CrudSync implements Serialization{
private static final long serialVersionUID = 1L;
@Id private Long id;
private String data;
//...ommited...
}
假设我有这个CrudSync实体
在N客户端数据库上,我将有一个包含列的表:
ID - Number - PK
Data - Varchar
etc...
在1服务器端,我想要一张包含以下内容的桌子:
ID - Number - PK
ClientPK - Number // the ID on Client database table
ClientId - Number // the Client code (1,2,3,4.. etc..)
// UQ (ClientPK,ClientID)
Data - Varchar
etc...
甚至是复合PK
ClientPK - Number - PK // the ID on Client database table
ClientId - Number - PK // the Client code (1,2,3,4.. etc..)
Data - Varchar
etc...
但如果可能的话,我不知道如何在双方使用相同的实体来实现这一点
另一个解决方案可能会为客户端和服务器创建单独的JAR/EAR。
这样做,我应该在Entities/JPA注释中更改什么?
应该将哪个类划分为客户机/服务器JAR/EAR
关于如何创建(N客户机1服务器)数据库的任何其他建议
客户端必须脱机工作,因此它们需要运行自己的数据库,服务器上也必须有相同的应用程序,因为可以在服务器上创建实体,这些实体将被发送到客户端(反之亦然)
我正在使用JBossAS7.1、JPA2、EJB3.1
提前谢谢。
另一方面,不确定是否可以使用相同的JPA实体来实现这一点。当您希望它驻留在应用程序中而不是数据库中时,逻辑可能会足够复杂 也就是说,您可以使用decorator模式,以便服务器/客户机应用程序可以使用相同的核心JPA实体。然后具有特定于服务器的JPA实体,这些实体修饰核心实体并持久化管理客户端和服务器应用程序之间的同步所需的数据。decorator对象只包含对核心对象的引用。然后,在服务器和客户机之间推拉数据所需的任何数据 希望这有帮助