Java Neo4j-英菲尼斯潘组合

Java Neo4j-英菲尼斯潘组合,java,neo4j,infinispan,hibernate-ogm,Java,Neo4j,Infinispan,Hibernate Ogm,我们的项目使用Neo4j作为长期数据存储 我们有一个使用数据网格的用例,可以将Neo4j从冗余查询中释放出来,能够直接在RAM中执行查询,并在内存中的某些数据发生更改时收到通知。为此,我们看到英菲尼斯潘非常有趣 除此之外,我们还看到Hibernate OGM可以同时支持Infinispan和Neo4j数据存储 使用Hibernate OGM是否可以使用相同的数据模型将POJO映射到Neo4j和Infinispan?是的,如果创建两个不同的工厂 如果您坚持使用JPA,那么您可以在两个持久化单元配置

我们的项目使用Neo4j作为长期数据存储

我们有一个使用数据网格的用例,可以将Neo4j从冗余查询中释放出来,能够直接在RAM中执行查询,并在内存中的某些数据发生更改时收到通知。为此,我们看到英菲尼斯潘非常有趣

除此之外,我们还看到Hibernate OGM可以同时支持Infinispan和Neo4j数据存储


使用Hibernate OGM是否可以使用相同的数据模型将POJO映射到Neo4j和Infinispan?

是的,如果创建两个不同的工厂

如果您坚持使用JPA,那么您可以在两个持久化单元配置中使用相同的实体类,但是您将无法使用单个工厂同时在两个数据存储上工作

这是一个简单的示例,取自存储库中的一个测试,该测试为Hibernate ORM创建了一个实体管理器,为Hibernate OGM创建了一个实体管理器:

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
         version="2.0">

  <persistence-unit name="ogm" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ogm.jpa.HibernateOgmPersistence</provider>
  </persistence-unit>

  <persistence-unit name="no-ogm" transaction-type="RESOURCE_LOCAL">
    <properties>
      <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
    </properties>
  </persistence-unit>

</persistence>
您也可以对注释执行类似的操作

EntityManagerFactory emf = Persistence.createEntityManagerFactory( "ogm" );