Neo4j - комбинация Infinispan - PullRequest
0 голосов
/ 11 мая 2018

Наш проект использует Neo4j в качестве долгосрочного хранилища данных.

У нас есть пример использования сетки данных для освобождения Neo4j от избыточных запросов, возможности выполнения запросов непосредственно в ОЗУ и уведомления об изменении данных в памяти. Для этого мы увидели, что Infinispan очень интересен.

Кроме того, мы видели, что Hibernate OGM может поддерживать как хранилища данных Infinispan, так и Neo4j.

Можно ли использовать одну и ту же модель данных для сопоставления наших pojos с Neo4j и Infinispan с Hibernate OGM?

1 Ответ

0 голосов
/ 11 мая 2018

Да, если вы создаете две разные фабрики.

Если вы придерживаетесь 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" );

Вы можете сделать что-то подобное и с аннотациями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...