Le client envoie la même instruction de requête SQL au serveur de base de données. Si la base de données est accédée à chaque fois, les performances seront réduites.
Alors comment s'améliorer ?
mybatis nous fournit une stratégie de cache de premier niveau
Entre l'ouverture et la fermeture d'une sqlSession, l'objet sqlSession (en fait l'Executor) maintiendra d'abord un objet en cache lors de l'interrogation des données. recherchez dans le cache si les données existent. Si elles existent, supprimez-les directement. Si elles n'existent pas, envoyez une requête SQL à la base de données, puis stockez les données de la requête dans le cache et renvoyez-les au programme.
Il y aura un problème :
Si lors de la première et de la deuxième requêtes, un programme modifie les données de la base de données à interroger, les données à lire seront fausses, c'est-à-dire une
lecture sale. En fait, mybatis videra le cache après que sqlSession ait exécuté la méthode commit(). La deuxième fois que vous interrogerez, vous interrogerez toujours la base de données
Vous pouvez également appeler manuellement la méthode clearCache() de sqlSession pour vider le cache
Petit exemple :
@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(); }
Problème :
Si sqlSession est fermé, le cache sera vidé. Comment utiliser la mise en cache pour améliorer l’efficacité ?
D'accord, le prochain article vous présentera le cache de deuxième niveau mybatis.
Ce qui précède est le cache de premier niveau Mybatis présenté par l'éditeur. J'espère qu'il vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Je voudrais également vous remercier tous pour votre soutien au site Web PHP chinois !
Pour une compréhension plus approfondie des articles liés au cache de premier niveau de Mybatis, veuillez prêter attention au site Web PHP chinois !