MyBatis是一个持久化框架, 用于封装数据库操作,通过XML的方法配置数据库和实体对象的映射关系。通过动态代理的方式生成数据库操作对象,能够自动解析查询返回结果并将结果属性注入到实体对象。
缓存的作用
缓存是保存查询结果到系统内存中,减少重复请求数据库的开支,提高系统的性能。
MyBatis缓存分为一级缓存和二级缓存,默认开启一级缓存。
同一SqlSession对象,参数和语句一样的SQL只执行一次,缓存过期列外
多个sqlSession共享的缓存,存储基于一个Mapper级别,也就是会保存一个mapper对象的查询结果,供多个sqlSession使用
优点 能够提升一定的性能,减少数据查询压力
缺点 不能分布式、容易造成数据过期、增加额外的配置,持久化困难,不易于解耦。
有什么更好的解决方案吗?
世界上没有最好的解决方案,至少相对当前情形最合理,可以从成本、系统复杂度和可维护性多方面考虑。
如果需要分布式,持久化,可以使用redis、ecache。
如果只图简单、可定制性高 new一个map就可以实现大致的功能了。
原文:https://www.cnblogs.com/danaohu/p/14869424.html