电子商务网站开发实广告策划书案例完整版
电子商务网站开发实,广告策划书案例完整版,手机网站如何建设,招财猫网站怎么做MyBatis 是一个流行的 Java 持久层框架#xff0c;它封装了 JDBC#xff0c;使数据库交互变得更简单、直观。MyBatis 支持两级缓存#xff1a;一级缓存#xff08;Local Cache#xff09;和二级缓存#xff08;Global Cache#xff09;#xff0c;通过这两级缓存可以有…MyBatis 是一个流行的 Java 持久层框架它封装了 JDBC使数据库交互变得更简单、直观。MyBatis 支持两级缓存一级缓存Local Cache和二级缓存Global Cache通过这两级缓存可以有效地减少数据库的访问次数提高应用性能。
一级缓存Local Cache
一级缓存是指 MyBatis 默认的缓存其作用域为 SqlSession。每当一个 SqlSession 被创建时一个新的一级缓存也会被创建。这意味着所有在同一个 SqlSession 中执行的查询都会使用这个缓存。如果同一个 SqlSession 中执行了两次相同的 SQL 查询第一次执行后的查询结果会被放在一级缓存中第二次查询就会直接从缓存中获取结果不需要再去查询数据库。
一级缓存的生命周期与 SqlSession 的生命周期相同当 SqlSession 被关闭时其对应的一级缓存也就消失了。
需要注意的是如果在两次相同查询之间执行了增删改操作这些操作可能会改变数据MyBatis 会清空缓存以确保缓存中存储的是最新的数据。
二级缓存Global Cache
与一级缓存不同二级缓存的作用域不是 SqlSession 而是 Mapper 的命名空间。这意味着来自不同 SqlSession 的相同命名空间的相同查询可以共享缓存数据。
二级缓存需要进行显式的配置才能使用。在 MyBatis 配置文件中开启二级缓存并在需要使用二级缓存的 Mapper 文件中添加相应配置。开启后查询结果会被缓存并且在多个 SqlSession 间共享。
二级缓存比一级缓存拥有更广的作用范围但也因此涉及更多的管理和维护工作比如处理缓存同步的问题。为确保数据的一致性当有增删改操作时MyBatis 会清空受影响的二级缓存区域。
缓存的原理简述
查询过程当执行查询时MyBatis 首先查找一级缓存如果没有找到再去查找二级缓存如果两级缓存都没有命中才会执行 SQL 查询数据库。更新过程当执行增删改操作时为维护数据的一致性MyBatis 会清空一级缓存和受影响的二级缓存。
通过以上机制MyBatis 的缓存能够有效地减少数据库的访问次数从而提高应用的性能。然而需要合理地配置和使用缓存避免因缓存数据过期或不一致而引发的问题。 在实际项目中使用 MyBatis 二级缓存时需要通过一些配置和步骤来开启和使用。以下是使用 MyBatis 二级缓存的一般步骤
步骤 1依赖引入
确保你的项目中引入了 MyBatis 和对应的缓存实现库。如果使用的是 Maven可以在 pom.xml 中添加如下依赖版本号仅供参考使用时请选用适当的版本
xml复制代码
!-- MyBatis --
dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.6/version
/dependency!-- 使用EhCache作为二级缓存实现 --
dependencygroupIdorg.mybatis.caches/groupIdartifactIdmybatis-ehcache/artifactIdversion1.2.0/version
/dependency步骤 2MyBatis 配置文件中开启二级缓存
在 MyBatis 的全局配置文件mybatis-config.xml中添加二级缓存的配置。需要设置 cacheEnabled 属性为 true这个属性默认为 true但最好在配置文件中明确指出。
xml复制代码
configurationsettings!-- 开启全局二级缓存默认为true --setting namecacheEnabled valuetrue//settings
/configuration步骤 3在 Mapper.xml 中配置二级缓存
在你希望启用二级缓存的 Mapper.xml 文件中添加 cache 标签。例如
xml复制代码
mapper namespacecom.example.mapper.UserMapper!-- 开启这个Mapper的二级缓存 --cache evictionFIFO flushInterval60000 size512 readOnlytrue/!-- Mapper接口方法的定义 --
/mappereviction缓存的回收策略如 LRU最近最少使用的、FIFO先进先出等。flushInterval缓存刷新间隔单位毫秒。size引用数目缓存中对象的最大数量。readOnly是否只读。只读缓存会给所有调用者返回缓存对象的相同实例因此它们不应该修改这些对象。
步骤 4实体类序列化
由于二级缓存数据需要在不同的会话之间共享MyBatis 会将缓存数据序列化后存储。因此对应的实体类需要实现 java.io.Serializable 接口
java复制代码
public class User implements Serializable {private static final long serialVersionUID 1L;// 类的属性和方法
}注意事项
二级缓存的使用场合二级缓存适用于读多写少的情况如果业务场景中数据频繁变动可能导致缓存频繁失效反而降低性能。数据一致性在使用二级缓存时应注意缓存数据的一致性问题。在进行数据更新操作后需要合理地清理相关缓存避免出现脏读。缓存策略的选择可以根据实际需求选择合适的缓存回收策略和缓存配置。
通过以上步骤和注意事项可以在实际项目中有效地配置和使用 MyBatis 的二级缓存从而提高应用的性能。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/89341.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!