Home > Java > javaTutorial > In-depth understanding of Mybatis first-level cache

In-depth understanding of Mybatis first-level cache

高洛峰
Release: 2017-01-23 09:33:30
Original
1551 people have browsed it

The client sends the same SQL query statement to the database server. If the database is accessed every time, performance will be reduced.

So how to improve?

mybatis provides us with a first-level cache strategy

Between the opening and closing of a sqlSession, the sqlSession object (actually the Executor) will maintain a cached object when querying data. , first search the cache to see if the data exists. If it exists, take it out directly. If it does not exist, send a SQL query to the database, and then store the query data in the cache and return it to the program.

There will be a problem:

If during the first and second queries, a program changes the data of the database to be queried, it will cause the read data to be Wrong, that is,

dirty reading, actually mybatis will clear the cache after sqlSession executes the commit() method. The second time you query, you will still query from the database.

You can also manually call the clearCache() method of sqlSession to clear the cache

Small example:

@Test
  public void testCacheLever1() throws Exception{
    SqlSession session = factory.openSession();
    UserMapper mapper = session.getMapper(UserMapper.class);
    //第一次请求,查询id为1的用户
    User user = mapper.findUserById(1);
    System.out.println(user);
    //更改数据,会清空缓存
    user.setUsername("yyyy");
    mapper.updateUser(user);
    session.commit();
    //第二次查询会从缓存中找
    User user2 = mapper.findUserById(1);
    System.out.println(user2);
    session.close();
  }
Copy after login

Question:

If sqlSession is closed, the cache will be cleared. How to use caching to improve efficiency?

Okay, the next article will introduce to you mybatis second-level cache.

The above is the Mybatis first-level cache introduced by the editor. I hope it will be helpful to you. If you have any questions, please leave me a message and the editor will reply to you in time. I would also like to thank you all for your support of the PHP Chinese website!

For more in-depth understanding of Mybatis first-level cache related articles, please pay attention to the PHP Chinese website!

Related labels:
source:php.cn
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template