使用spring数据jpa将单个实体转换为多个存储库
我有一些代码可以从RDBMS读取数据并将其插入Elasticsearch。我希望对这两个存储库使用相同的实体类。这是可能的还是一般来说,这是一种最佳做法。我使用的是SpringDataJPA、Hibernate和SpringBoot 我的实体类名为Contact with least two使用spring数据jpa将单个实体转换为多个存储库,spring,hibernate,elasticsearch,Spring,Hibernate,elasticsearch,我有一些代码可以从RDBMS读取数据并将其插入Elasticsearch。我希望对这两个存储库使用相同的实体类。这是可能的还是一般来说,这是一种最佳做法。我使用的是SpringDataJPA、Hibernate和SpringBoot 我的实体类名为Contact with least two@OneToManyannotation,您可以在这里找到: @Entity public class Contact { @Id @GeneratedValue(strategy=Gener
@OneToMany
annotation,您可以在这里找到:
@Entity
public class Contact {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="CONTACT_ID")
private Long contactId;
@Column(name="CONTACT_IDENTIFIER")
private String contactIdentifier;
//Some other properties
@OneToMany(mappedBy="contact", cascade=CascadeType.ALL, fetch = FetchType.LAZY)
@JsonManagedReference
private List<ContactServiceEvent> listContactServiceEvent;
@OneToMany(mappedBy="contact", cascade=CascadeType.ALL, fetch = FetchType.LAZY)
@JsonManagedReference
private List<ContactVoiceServiceEvent> listContactVoiceServiceEvent;
// setter getters
}
@实体
公共类联系人{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“CONTACT\u ID”)
私人长联系人ID;
@列(name=“CONTACT\u IDENTIFIER”)
私有字符串标识符;
//其他一些属性
@OneToMany(mappedBy=“contact”,cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@JsonManagedReference
私有列表列表ContactServiceEvent;
@OneToMany(mappedBy=“contact”,cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@JsonManagedReference
私有列表listContactVoiceServiceEvent;
//塞特吸气剂
}
我的存储库界面如下
@Repository
public interface ContactRepository extends PagingAndSortingRepository<Contact, Long>, ContactRepositoryCustom{
}
@Repository
public interface ContactDocRepository extends ElasticsearchRepository<Contact, Long> {
}
@存储库
公共接口ContactRepository扩展了分页和排序存储库,ContactRepositoryCustom{
}
@存储库
公共接口ContactDocRepository扩展了ElasticsearchRepository{
}
请告诉我应该怎么做,因为我无法通过谷歌搜索找到任何明确的答案。使用hibernate,我们可以对不同的存储库使用相同的实体,因为我知道您必须为各自的存储库创建不同的会话工厂。在这种情况下,每个会话工厂使用数据源映射到某个存储库。 然后使用不同的会话工厂,您可以使用相同的代码从不同的存储库获取数据。 我不知道elasticsearch是如何工作的。我认为这将有助于您继续进行。使用 它是由Hibernate团队为此目的创建的,现在也可以与Elasticsearch同步 您不仅可以使用相同的实体,而且不必担心:
- 序列化问题以及如何将对象映射到JSON(只需将属性映射到Elasticsearch字段)
- 如何连接到Elasticsearch服务器,您只需对其进行配置即可
- 确保将所有更改写入两个存储库。写入是完全自动的
- 为此目的进行了高度优化
@实体
和@文档
,以后会不会导致任何问题。有人有经验吗?