Home Java javaTutorial Detailed explanation of MyBatis code examples on second-level cache issues

Detailed explanation of MyBatis code examples on second-level cache issues

Mar 24, 2017 am 10:34 AM

This article mainly introduces MyBatis's issue with the second-level cache. The second-level cache is a Mapper-level cache. Multiple sqlSession operates the same Mapper, and its second-level cache It can be shared.

MyBatis provides first-level cache and second-level cache. The first-level cache is a sqlSession-level cache. The caches between different sqlSession do not affect each other. The second-level cache is a Mapper-level cache. Multiple sqlSession operates on the same Mapper, and its second-level cache can be shared.

MyBatis has a variety of second-level cache solutions to choose from. Among them, the support for Memcached is relatively mature. We will take Memcached as an example to introduce the integration with the spring project.

Use configuration

Configure pom.xml and add dependencies.

<dependencies>
 ...
 <dependency>
  <groupId>org.mybatis.caches</groupId>
  <artifactId>mybatis-memcached</artifactId>
  <version>1.0.0</version>
 </dependency>
 ...
</dependencies>
Copy after login

Global switch

<settings>
  <setting name="cacheEnabled" value="true"/>
</settings>
Copy after login

Configure the mapper.xml that needs to be cached

The second-level cache is Mapper level, you can Enable second-level cache for specific mapper.xml.

<mapper namespace="org.acme.FooMapper">
 <cache type="org.mybatis.caches.memcached.MemcachedCache" />
</mapper>
Copy after login

After it is turned on, all select statements in the mapper will be cached by default. All insert, update, and delete statements under this namespace will cause the cache in the space to be cleared.

Cache can be disabled for a specific statement.

 <select id="retObj" resultMap="results" useCache="false" >
   select id, name, sex from employee  
 </select>
Copy after login

You can also trigger a refresh action for a certain statement (default corresponds to all insert, update, delete statements).

 <select id="retObj" resultMap="results" flushCache="true" >
   select id, name, sex from employee  
 </select>
Copy after login

Configuration parameters are set in memcached.properties. If missing, the default settings are used.

The following are the configuration parameters:

If you need to record the cache operation log, you can achieve it by the following configuration

<mapper namespace="org.acme.FooMapper">
 <cache type="org.mybatis.caches.memcached.LoggingMemcachedCache" />
 ...
</mapper>
Copy after login

Notes

Classes cached in Memcached need to implement the Serializable interface, otherwise the error java.io.NotSerializableException will be reported.

Second-level cache application scenarios

  1. It is recommended to use the second-level cache for data with high query frequency and low change frequency.

  2. For query requests that access a lot and users do not have high requirements for real-time query results, mybatis second-level caching technology can be used to reduce database access and improve access speed. Business scenarios such as : Time-consuming statistical analysis SQL, telephone bill query SQL, etc.

The implementation method is as follows:

By setting the refresh interval, mybatis automatically clears the cache every period of time, according to data changes Frequency setting cache refresh interval flushInterval, for example, set to 30 minutes, 60 minutes, 24 hours, etc., depending on needs.

mybatis limitations

Mybatis second-level cache is not good at fine-grained data level caching.

For example, the following requirements: cache product information. Due to the large number of product information query visits, users are required to query the latest product information every time. At this time, if you use the second-level cache of mybatis It is impossible to achieve that when a product changes, only the cache information of the product will be refreshed without refreshing the information of other products, because the second-level cache area of ​​​​mybaits is divided in units of mappers. When the information of a product changes, all products will be refreshed. All cached data of the message are cleared. Solving such problems requires targeted caching of data based on needs at the business layer.

The above is the detailed content of Detailed explanation of MyBatis code examples on second-level cache issues. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

iBatis vs. MyBatis: Which one is better for you? iBatis vs. MyBatis: Which one is better for you? Feb 19, 2024 pm 04:38 PM

iBatis vs. MyBatis: Which should you choose? Introduction: With the rapid development of the Java language, many persistence frameworks have emerged. iBatis and MyBatis are two popular persistence frameworks, both of which provide a simple and efficient data access solution. This article will introduce the features and advantages of iBatis and MyBatis, and give some specific code examples to help you choose the appropriate framework. Introduction to iBatis: iBatis is an open source persistence framework

Detailed explanation of the Set tag function in MyBatis dynamic SQL tags Detailed explanation of the Set tag function in MyBatis dynamic SQL tags Feb 26, 2024 pm 07:48 PM

Interpretation of MyBatis dynamic SQL tags: Detailed explanation of Set tag usage MyBatis is an excellent persistence layer framework. It provides a wealth of dynamic SQL tags and can flexibly construct database operation statements. Among them, the Set tag is used to generate the SET clause in the UPDATE statement, which is very commonly used in update operations. This article will explain in detail the usage of the Set tag in MyBatis and demonstrate its functionality through specific code examples. What is Set tag Set tag is used in MyBati

Comparative analysis of the functions and performance of JPA and MyBatis Comparative analysis of the functions and performance of JPA and MyBatis Feb 19, 2024 pm 05:43 PM

JPA and MyBatis: Function and Performance Comparative Analysis Introduction: In Java development, the persistence framework plays a very important role. Common persistence frameworks include JPA (JavaPersistenceAPI) and MyBatis. This article will conduct a comparative analysis of the functions and performance of the two frameworks and provide specific code examples. 1. Function comparison: JPA: JPA is part of JavaEE and provides an object-oriented data persistence solution. It is passed annotation or X

Various ways to implement batch deletion operations in MyBatis Various ways to implement batch deletion operations in MyBatis Feb 19, 2024 pm 07:31 PM

Several ways to implement batch deletion statements in MyBatis require specific code examples. In recent years, due to the increasing amount of data, batch operations have become an important part of database operations. In actual development, we often need to delete records in the database in batches. This article will focus on several ways to implement batch delete statements in MyBatis and provide corresponding code examples. Use the foreach tag to implement batch deletion. MyBatis provides the foreach tag, which can easily traverse a set.

Detailed explanation of how to use MyBatis batch delete statements Detailed explanation of how to use MyBatis batch delete statements Feb 20, 2024 am 08:31 AM

Detailed explanation of how to use MyBatis batch delete statements requires specific code examples. Introduction: MyBatis is an excellent persistence layer framework that provides rich SQL operation functions. In actual project development, we often encounter situations where data needs to be deleted in batches. This article will introduce in detail how to use MyBatis batch delete statements, and attach specific code examples. Usage scenario: When deleting a large amount of data in the database, it is inefficient to execute the delete statements one by one. At this point, you can use the batch deletion function of MyBatis

Detailed explanation of MyBatis first-level cache: How to improve data access efficiency? Detailed explanation of MyBatis first-level cache: How to improve data access efficiency? Feb 23, 2024 pm 08:13 PM

Detailed explanation of MyBatis first-level cache: How to improve data access efficiency? During the development process, efficient data access has always been one of the focuses of programmers. For persistence layer frameworks like MyBatis, caching is one of the key methods to improve data access efficiency. MyBatis provides two caching mechanisms: first-level cache and second-level cache. The first-level cache is enabled by default. This article will introduce the mechanism of MyBatis first-level cache in detail and provide specific code examples to help readers better understand

Detailed explanation of MyBatis cache mechanism: understand the cache storage principle in one article Detailed explanation of MyBatis cache mechanism: understand the cache storage principle in one article Feb 23, 2024 pm 04:09 PM

Detailed explanation of MyBatis caching mechanism: One article to understand the principle of cache storage Introduction When using MyBatis for database access, caching is a very important mechanism, which can effectively reduce access to the database and improve system performance. This article will introduce the caching mechanism of MyBatis in detail, including cache classification, storage principles and specific code examples. 1. Cache classification MyBatis cache is mainly divided into two types: first-level cache and second-level cache. The first-level cache is a SqlSession-level cache. When

Analyze the caching mechanism of MyBatis: compare the characteristics and usage of first-level cache and second-level cache Analyze the caching mechanism of MyBatis: compare the characteristics and usage of first-level cache and second-level cache Feb 25, 2024 pm 12:30 PM

Analysis of MyBatis' caching mechanism: The difference and application of first-level cache and second-level cache In the MyBatis framework, caching is a very important feature that can effectively improve the performance of database operations. Among them, first-level cache and second-level cache are two commonly used caching mechanisms in MyBatis. This article will analyze the differences and applications of first-level cache and second-level cache in detail, and provide specific code examples to illustrate. 1. Level 1 Cache Level 1 cache is also called local cache. It is enabled by default and cannot be turned off. The first level cache is SqlSes

See all articles