相同:
1.都分为两级缓存,一级缓存和二级缓存,一级缓存都是session事务级别的,在一个事务中有效,事务执行完后缓存失效
2.一般用户不需要干涉一级缓存,默认一级缓存时开启的
3.二级缓存都可以自定义配置,手动设置开启或者关闭
4.mybatis可以针对mapper中某一个statement设置是否使用二级缓存
5.二级缓存都可以通过配置使用EHCache(可持久化到硬盘)
不同:
1.hibernate的二级缓存时应用进程级别的,整个应用进程查询相同的sql时会使用二级缓存中的数据;mybatis是相同namespace下的mapper文件中的sql缓存,可以让多个sqlSession共享,但不是应用程序级别
2.mybatis的相同namespace下的mapper中如果有增删改的操作,会自动清空二级缓存的内容