cdwei80 2015-05-21 02:10 采纳率: 0%
浏览 917

我如何实现eclipselink 的二级缓存?

How to create my own implementation of EclipseLink's L2 cache?

My current issue is that I want to be able to use memcache/redis as a distributed cache, but currently I can't find any way of doing this. Most of the solutions I found is about cache coordination which seems a bit overkill for my requirement. I just need shared L2 cache across horizontally scaled servers.

Thanks

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-03 22:08
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    EclipseLink 提供了两种方式来实现二级缓存:一种是使用 ECLIPSELINK.CacheManager,另一种是在 Hibernate 中的 Cache。以下是如何在 EclipseLink 中使用 ECLIPSELINK.CacheManager 实现二级缓存的示例:

    import org.eclipse.persistence.eclipselink.CacheManager;
    import org.eclipse.persistence.jpa.EntityManagerFactoryUtil;
    
    public class MyCacheManager extends CacheManager {
    
        public MyCacheManager() {
            super(EntityManagerFactoryUtil.getEntityManagerFactory());
        }
    
        @Override
        protected void onTransactionCompletion(TransactionalStatus status) {
            // 检查事务是否完成
            if (!status.isComplete()) {
                return;
            }
            // 获取当前事务的缓存
            Cache cache = status.getTransaction().getCache();
            // 如果当前事务的缓存为空,则返回
            if (cache == null) {
                return;
            }
            // 从缓存中获取数据并进行操作
            Object data = cache.get("myKey");
            // ...
        }
    }
    

    在这个例子中,我们创建了一个名为 MyCacheManager 的类,它继承自 ECLIPSELINK.CacheManager,并重写了 onTransactionCompletion 方法。这个方法会检查事务是否已完成,如果已完 成,则从当前事务的缓存中获取数据并进行操作。

    关于 redis 和 memcached 的使用,请参考其官方文档和社区讨论,以找到适合您需求的方法。

    评论

报告相同问题?

悬赏问题

  • ¥15 安装CentOS6时卡住
  • ¥20 关于#监控系统#的问题,如何解决?(相关搜索:系统软件)
  • ¥20 c语言写的8051单片机存储器mt29的模块程序
  • ¥60 求直线方程 使平面上n个点在直线同侧并且距离总和最小
  • ¥50 java算法,给定试题的难度数量(简单,普通,困难),和试题类型数量(单选,多选,判断),以及题库中各种类型的题有多少道,求能否随机抽题。
  • ¥50 rk3588板端推理
  • ¥250 opencv怎么去掉 数字0中间的斜杠。
  • ¥15 这种情况的伯德图和奈奎斯特曲线怎么分析?
  • ¥250 paddleocr带斜线的0很容易识别成9
  • ¥15 电子档案元素采集(tiff及PDF扫描图片)