MyBatis 中的缓存机制有啥用?

MyBatis 提供了一级缓存和二级缓存两种缓存机制,主要用于提高查询性能,减少数据库的访问次数。

  1. 一级缓存(Session Cache): 一级缓存是 SqlSession 级别的缓存,当我们执行查询时,会先从缓存中获取数据,如果没有,就从数据库查询数据,并将查询出的数据放入缓存中。一级缓存会在 SqlSession 关闭或提交时清空。

    一级缓存的主要目的是为了防止一个 SqlSession 内部多次查询相同数据,导致多次向数据库发出查询请求。通过使用一级缓存,可以在 SqlSession 生命周期内提高查询效率。

  2. 二级缓存(Mapper Cache): 二级缓存是 Mapper 级别的缓存,多个 SqlSession 可以共享二级缓存中的数据,即使 SqlSession 关闭,二级缓存中的数据也不会被清空,只有在同一个 SqlSessionFactory 中的 SqlSession 才能共享同一个二级缓存。

    二级缓存的主要目的是为了防止多个 SqlSession 查询相同的数据,导致多次向数据库发出查询请求。通过使用二级缓存,可以跨 SqlSession 提高查询效率。

需要注意的是,尽管缓存可以提高查询的性能,但是如果数据的一致性要求很高,或者数据的更新频率很快,使用缓存可能会导致数据的不一致,因此在使用缓存时需要考虑其适用场景。

发表评论

后才能评论