跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • JPA 二级缓存问题请教
未分類
2020 年 9 月 5 日

JPA 二级缓存问题请教

JPA 二级缓存问题请教

資深大佬 : NULL2020 10

service 层两个查询方法:

    @Cacheable(value = "space", key = "#id", unless = "#result==null")     public Space searchOne(long id) {         return repository.findById(id).orElse(null);     }      public Space searchOneWithUser(long id) {         Space space = searchOne(id);         space.setCreator(userService.searchOne(space.getUserId()));         return space;     }  

为什么调用第二个方法不走缓存? 缓存有数据还是从数据库里查,缓存没有数据,查出来后也不写到缓存里面。

大佬有話說 (11)

  • 資深大佬 : CoderGeek

    这个是基于 AOP 的动态代理实现,你内部引用不生效
    1.放到外部的类调用
    2.用 ApplicationContext.getBean 在调用 searchOne(id)

  • 資深大佬 : wysnylc

    https://www.jianshu.com/p/6534945eb3b5
    JDK Dynamic Proxy 无法拦截 this,Spring 默认使用 JDK Dynamic Proxy,所以 Spring AOP 无法代理 this 所以 Spring Cache 缓存注解无效.解决方案为注入当前类的 bean 进行使用(但是有可能造成循环调用)或者拆分逻辑到另一个 services
    题外话:你这不是 JPA 二级缓存而是 Spring Cache 自定义缓存,二级缓存是基于表的缓存

  • 主 資深大佬 : NULL2020

    @CoderGeek #1
    @wysnylc #2

    多谢多谢

  • 資深大佬 : ixx

    多说一句,有一道关于事务的面试题就是你这么写的,把缓存注解换成事务注解 原理是一样的 ,调用第二个不走事务

  • 主 資深大佬 : NULL2020

    @wysnylc #2 我的理解,二级缓存就是查询缓存,你说的 [基于表的缓存] 好像第一次听说,有没有技术文章可以分享一下?

  • 主 資深大佬 : NULL2020

    @ixx #4 感谢,事务失效的几种原因之一 [自调用]

  • 資深大佬 : aragakiyuii

    这个不是 orm 的二级缓存吧。。
    cglib 代理完大概就这样(不准确

    JPA 二级缓存问题请教

  • 資深大佬 : aragakiyuii

    @aragakiyuii #7 extend -> extends

  • 資深大佬 : wysnylc

    @NULL2020 #5 http://wbnbd.com/?q=jpa%20%E4%B8%80%E7%BA%A7%E7%BC%93%E5%AD%98%20%E4%BA%8C%E7%BA%A7%E7%BC%93%E5%AD%98
    http://iwo.im/?q=mybatis%20%E4%BA%8C%E7%BA%A7%E7%BC%93%E5%AD%98

  • 資深大佬 : leafre

    Space space = this.searchOne(id);
    <aop:aspectj-autoproxy expose-proxy=”true”/>

  • 資深大佬 : br00k

    把当前实例使用 @Lazy 注入,内部方法走 service 调用就可以走代理了。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具