【问题标题】:Infinispan JPA Cache loader?Infinispan JPA 缓存加载器?
【发布时间】:2012-09-19 23:09:36
【问题描述】:

如何实现 Infinispan JPA 缓存加载器?在 infinispan API 中是否有任何模式或方法来实现它?

【问题讨论】:

  • 这样做有意义吗?我建议使用 JDBC 缓存加载器,因为 CacheLoader API 是关于加载和存储 blob 的:你不能将它映射到一些已知的模式。如果您需要更灵活的存储,请查看 Hibernate OGM
  • 如果它可以存储为实体表而不是像 blob 那样它可以通过缓存写入获得更多优势

标签: caching infinispan


【解决方案1】:

Infinispan 中大多数现有的 CacheLoader 实现都假设数据只需要存储,并盲目地将其视为字节数组。 Infinispan 中的集成 API 没有公开除“store(Key,Value)”或“load(Key)”之外的很多上下文。我有点过于简单化了,但这就是核心。

LuceneCacheLoader 是一个例外。这是专为与Lucene Directory for Infinispan 结合使用而设计的,因为它利用了这一事实

  • 它知道预期的类型
  • 利用目录的已知需求(例如访问模式)

查看资源以获得灵感;注意我只实现了加载(它是一个 CacheLoader)。

如果您同时使用 Infinispan 和 CacheLoader 控制应用程序,您也可以利用这些细节。

棘手的方面:

  • 即使在同一个事务中写入多个键,您也可以在 CacheLoader 逻辑范围内一次访问一个条目 -> 难以映射关系:必须一次处理一个实体并“恢复连接”
  • 使用 write behind 您可能会收到乱序的条目 -> 不确定如何处理参照完整性
  • 使用 write behind 您将不会拥有相同的 Transactional 上下文 -> 可能可以接受吗?

考虑到这些,我相信你可以写一个。多么容易?这取决于您的应用。

我不确定通用解决方案是否可行。如果你发现它可以,请贡献它,因为这将是对项目的一个很好的补充。

【讨论】:

    猜你喜欢
    • 2016-05-27
    • 1970-01-01
    • 2016-10-02
    • 2015-05-04
    • 2014-05-10
    • 1970-01-01
    • 2019-06-15
    • 2013-12-25
    • 2018-02-03
    相关资源
    最近更新 更多