一、简述
MyBatis 的一级缓存是基于数据库会话(SqlSession 对象)的,默认开启。二级缓存是基于全局(nameSpace)的,开启需要配置。
对于JDBC 操作,如果需要连续请求 id=1 的用户数据,那么就要进行两次的数据库连接,获取数据库中的数据。相同的数据,进行两次数据库连接,这肯定会造成资源的浪费。基于面向对象,可以把第一次获取的数据保存到一个对象中,下一次直接从对象中获取就行了,如图:
获取的内容保存在对象中,在一个请求期间,直接使用或者传递对象就可以了。对于 JDBC 的操作,可以自己定义类或者集合来保存数据库中的数据,来避免连续请求数据库的问题。这里用来保存数据的对象或者集合,也能称之为缓存。
但是使用了三层架构之后,Dao 层和 Dao 层之间有可能互相是不清楚的。如果有一个复杂的业务要在 Service 层中进行处理,需要分别调用不同 Dao 层中的数据,那这样简单的缓存还是不够看。