java - Neo4j - Infinispan 组合
问题描述
我们的项目使用 Neo4j 作为长期数据存储。
我们有一个用例来使用数据网格将 Neo4j 从冗余查询中解脱出来,能够直接在 RAM 中进行查询,并在内存中的某些数据发生更改时得到通知。为此,我们已经看到 Infinispan 非常有趣。
最重要的是,我们已经看到 Hibernate OGM 可以同时支持 Infinispan 和 Neo4j 数据存储。
是否可以使用相同的数据模型通过 Hibernate OGM 将我们的 pojos 映射到 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" );
您也可以对注释执行类似的操作。
推荐阅读
- c# - 如何在 IIS 托管的 C# web 服务中强制访问控制允许来源
- arrays - 如何将 2 个不同数组中的数字组合成一个数组?
- ios - 必须在另一个线程中使用 dispatch_semaphore_t 吗?
- python - 所有 XML 元素标记中的 URL
- python-3.x - BeautifulSoup 抓取返回 {{ variable }} 而不是页面上显示的文本
- python - 如何在 Gensim 的 LdaModel 中记录时代
- python - Kivy Window.size 不会改变窗口的大小
- c++ - 如何修复循环中0位置不取值的错误
- c# - 使用鼠标位置 Unity3D 移动对象时的问题
- python - 在数据流上运行自定义模板时出现错误“无法解析文件”