Java JPA:2个应用程序需要更新一个对象

Java JPA:2个应用程序需要更新一个对象,java,spring,jpa,Java,Spring,Jpa,我有一个应用程序A,它有一个实体客户 package stackoverflowTest.dao; import javax.persistence.*; @Entity @Table(name = "customers") public class Customer { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id") private long id; @Column(name = "nam

我有一个应用程序A,它有一个实体客户

package stackoverflowTest.dao;

import javax.persistence.*;

@Entity
@Table(name = "customers")
public class Customer {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private long id;

@Column(name = "name")
private String name;

public Customer(String name) {
this.name = name;
}


}
现在我有一个应用程序B,它需要更新实体

我必须先做findOnecustomer然后再做更新吗

如何在两个应用程序中管理实体类?例如,如果我在应用程序A中更改entityadd另一个字段,我不想为了更新名称而再次部署

我可以用肮脏的方式来做;这意味着我在两个应用程序中都有这个类,然后进行findOne,然后进行更新

我只是想知道是否有更好的方法


谢谢。

这很简单,您可以创建一个单独的项目来生成一个jar文件,包括您的存储库层和实体。然后,通过创建jar文件,可以将其添加到applicationA和applicationB pom.xml中

这样可以避免在多个项目中重复自己


为了方便地处理jar文件的更新,您还可以将最新版本上载到工件存储库管理器上,例如:Nexus或Artifactory,以便在应用程序之间轻松共享最新的jar文件版本。

解决此问题的最佳方法是使用公共队列,例如,当应用程序A对数据库进行任何更改时,您可以将此值推送到队列中。从应用程序B中,您使用此更改的值,即更新的值。了解如何在一个应用程序中使用JPA。一旦您知道如何做到这一点,就没有理由不在另一个应用程序上以完全相同的方式使用它。我不明白你有两个应用程序这一事实与你如何使用JPA有什么关系。@AlexandarPetrov这两个不同的线程不是在两个不同的应用程序上吗?我有一个主应用程序A,它是我的大应用程序。第二个应用程序只是一个侦听队列的小应用程序,需要更新名称。我去买了一个小的弹簧靴。@MaruthiAdithya sory我有点心烦意乱。Artifactory或nexus现在不可用。那我就复制一个实体。为什么要复制?artifactory或nexus不是强制性的,它们只是为了简化过程,如果您没有它们,也可以,正如我所说的,用实体及其存储库创建一个maven项目,然后将其安装到本地repo,并将maven依赖性添加到applicationA和applicationB。如果您没有maven,则生成jar文件并添加到项目的库中。我使用此解决方案。Nexus还没有出现。在本地机器上,我生成jar。在我的ci上,我使用gitlab co生成的jar,并通过get请求获取它。谢谢那太好了,我很高兴它起了作用
<dependency>
    <groupId>com.example.app</groupId>
    <artifactId>application-commons</artifactId>
    <version>0.0.1</version>
</dependency>