MyBatis一级缓存,是基于sqlSession级别的,一个sqlSession代表和数据库的一次会话。数据被查出来就会被放在以及缓存中。
缓存里面其实就是一个map 方法入参都是Object类型。都被Cache接口定义好了。
MyBatis二级缓存,基于namespace级别的,当开启二级缓存。一个sqlsession会话建立连接查询部门1的信息,并将查询出来的数据记录存储在sqlsession的一级缓存中,该sqlsession关闭后又将一级缓存的内容放在了二级缓存中。当下一次的sqlsession来查询该部门的记录时,只要从二级缓存中获取数据。新的sqlssion进来后先找二级缓存的内容是否存在要查询的内容。
先看二级缓存再看一级缓存,没有在找数据库。(对缓存不专业,只不过是小型map)。
但有缓存接口,我们可以通过接口里面的putObject方法将数据缓存到redis中,通过getObject方法将数据从redis中获取出来。可以实现自定义缓存。
比较成熟的第三方缓存,Ehcache(java进程内的缓存框架)。MyBatis对其进行整合,mybatis提供了缓存接口,我们可以重新实现接口的方法。让Ehcache保存数据和查找数据