经过大量努力,我们现在距离最终版本只有一步之遥。因此,不再拖延,我向大家介绍 Hibernate OGM 4.1.0.CR1。总的来说
- 对每个支持的数据存储(Infinispan、Ehcache、MongoDB、Neo4J)的稳定映射
- 为键/值存储提供新的、更好的单个实体结构缓存
- 在Neo4J和MongoDB中对嵌入式对象和复合ID进行了改进
- 更好的文档
Hibernate OGM 4.1的目标是为我们针对的主要数据存储提供良好的对象映射器。在最终版本发布前进行测试,并给我们反馈!
映射稳定性和文档
此CR版本标志着我们在各种数据存储上持久化每个数据结构的方式的稳定版本。我们努力提供对每个数据存储都自然的映射。我们进行了一些最终改进,并相信我们可以支持这个版本。
对于每个数据存储,我们记录了每个JPA映射的持久化方式(实体、星到一、星到多、嵌入式ID等)。这使得文档非常庞大,但展示了每个映射的真相。
我们抓住机会进一步改进了文档,并计划在最终版本完成这项工作。
附加的键/值缓存结构
我们的测试表明,将每个实体类型和关联存储在专用缓存中实际上比共享同一缓存对所有实体更有效。由于我们认为这是一种更自然的映射,我们现在提供此选项并将其设置为默认。
A用户和地址实体将导致以下缓存
- 用户: 包含用户
- 地址: 包含地址
- associations_User_Address: 包含用户到其地址列表的导航
一个有趣的副作用是它使键的大小更小,比较更快。Infinispan和Ehcache都从中受益。
关于嵌入式对象、嵌入式ID和属性的改进
在Neo4J中,(非ID)嵌入式对象现在表示为单独的节点。这更符合图数据库的连接行为。
在MongoDB中,嵌入式ID外键已得到改进,现在表示为嵌套文档,就像嵌入式ID已经那样。我们没有听到对此的任何抱怨,所以我们认为你们没有在MongoDB中使用复合ID。那很好,继续保持:
Thenull属性不再存储在任何数据存储中。虽然这可能会使涉及null值的某些查询变得有点困难,但它是对数据存储的更自然映射。