Ikhtisar dan klasifikasi cache
Ikhtisar
Cache ialah ruang memori. Ia menyimpan data sementara
Sebab gunakan Cache
membaca data daripada sumber data (pangkalan data atau fail) dan menyimpannya dalam cache Apabila ia diambil semula, ia diperoleh terus daripada cache, yang boleh mengurangkan bilangan interaksi dengan pangkalan data dan meningkatkan prestasi program
Kebolehgunaan caching
Sesuai untuk caching: kerap ditanya tetapi tidak kerap diubah suai (cth: wilayah, bandar, data kategori), ketepatan data tidak mempunyai kesan ke atas keputusan akhir Yang besar
Tidak sesuai untuk caching: data yang kerap berubah, data sensitif (contohnya: harga pasaran saham, kadar pertukaran bank, wang dalam kad bank), dsb.
Kategori cache MyBatis
Cache Tahap 1: Ia adalah cache objek sqlSession Ia disertakan dengannya (tiada konfigurasi diperlukan) dan tidak boleh dinyahpasang (jika anda tidak mahu menggunakannya). . Kitaran hayat cache tahap pertama adalah konsisten dengan sqlSession.
Cache Tahap 2: Ia adalah cache SqlSessionFactory. Selagi SqlSession yang dicipta oleh SqlSessionFactory yang sama berkongsi kandungan cache peringkat kedua, ia boleh mengendalikan cache peringkat kedua. Jika kita ingin menggunakan cache peringkat kedua, kita perlu mendayakannya sendiri secara manual (konfigurasi diperlukan).
Penggunaan cache tahap kedua
1 Dayakan cache tahap kedua dalam fail konfigurasi teras mybatis
<!--**因为 cacheEnabled 的取值默认就为 true**,所以这一步可以省略不配置。为 true 代表开启二级缓存;为 false 代表不开启二级缓存。 --> <settings> <setting name="cacheEnabled" value="true"/> </settings>
2 cache dalam fail pemetaan Dao
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.itheima.dao.UserDao"> <!--配置二级缓存--> <cache/> <select id="findAll" resultType="user"> select * from t_user </select> <delete id="deleteById" parameterType="int"> delete from t_user where uid=#{id} </delete> </mapper>
3. Kelas Pojo yang akan dicache mesti melaksanakan antara muka Serializable
public class User implements Serializable { private int uid; private String username; private String sex; private Date birthday; private String address; // 省略setter,getter,构造...等方法 }
4. Uji menggunakan cache tahap kedua
Kod ujian
@Test public void testFindAll() throws Exception{ // 1.加载mybatis核心配置文件 InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml"); // 2.创建SqlSessionFactoryBuilder对象 SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); // 3.构建SqlSessionFactory对象 SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is); // 4.获取SqlSession对象 SqlSession sqlSession = sqlSessionFactory.openSession(); // 5.获得dao接口的代理对象 UserDao userDao = sqlSession.getMapper(UserDao.class); // 6.执行sql语句,得到结果 List<User> list = userDao.findAll(); for (User user : list) { System.out.println("user = " + user); } sqlSession.close();//清除一级缓存 System.out.println("分割线----------------------------------"); SqlSession sqlSession2 = sqlSessionFactory.openSession(); UserDao userDao2 = sqlSession2.getMapper(UserDao.class); List<User> userList2 = userDao2.findAll(); for (User user : userList2) { System.out.println(user); } // 7.释放资源 sqlSession2.close(); }
- Keputusan ujian:
- Selepas ujian di atas, kami mendapati bahawa dua pertanyaan telah dilaksanakan, dan selepas melaksanakan pertanyaan pertama, kami mematikan cache peringkat pertama dan kemudian pergi ke Apabila melaksanakan pertanyaan kedua, kami mendapati bahawa tiada pernyataan SQL dikeluarkan kepada pangkalan data, jadi data pada masa ini hanya boleh datang daripada apa yang kami panggil cache peringkat kedua.
5. Uji untuk mematikan cache tahap kedua
- kod ujian
@Test public void testFindAll() throws Exception{ // 1.加载mybatis核心配置文件 InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml"); // 2.创建SqlSessionFactoryBuilder对象 SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); // 3.构建SqlSessionFactory对象 SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is); // 4.获取SqlSession对象 SqlSession sqlSession = sqlSessionFactory.openSession(); // 5.获得dao接口的代理对象 UserDao userDao = sqlSession.getMapper(UserDao.class); // 6.执行sql语句,得到结果 List<User> list = userDao.findAll(); for (User user : list) { System.out.println("user = " + user); } sqlSession.close();//清除一级缓存 System.out.println("分割线----------------------------------"); SqlSession sqlSession2 = sqlSessionFactory.openSession(); UserDao userDao2 = sqlSession2.getMapper(UserDao.class); userDao2.deleteById(5);// 关闭二级缓存 List<User> userList2 = userDao2.findAll(); for (User user : userList2) { System.out.println(user); } // 7.释放资源 sqlSession2.close(); }
- hasil ujian
Selepas Ujian di atas, kami mendapati bahawa dua pertanyaan telah dilaksanakan, dan selepas melaksanakan pertanyaan pertama, kami menutup cache peringkat pertama dan cache peringkat kedua Apabila kami melaksanakan pertanyaan kedua, kami mendapati bahawa pernyataan sql telah dikeluarkan pangkalan data, jadi Data pada masa ini datang daripada pangkalan data, bukan cache.
Atas ialah kandungan terperinci Cara menggunakan cache peringkat kedua Mybatis di Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel ini membincangkan menggunakan Maven dan Gradle untuk Pengurusan Projek Java, membina automasi, dan resolusi pergantungan, membandingkan pendekatan dan strategi pengoptimuman mereka.

Artikel ini membincangkan membuat dan menggunakan perpustakaan Java tersuai (fail balang) dengan pengurusan versi dan pergantungan yang betul, menggunakan alat seperti Maven dan Gradle.

Artikel ini membincangkan pelaksanaan caching pelbagai peringkat di Java menggunakan kafein dan cache jambu untuk meningkatkan prestasi aplikasi. Ia meliputi persediaan, integrasi, dan faedah prestasi, bersama -sama dengan Pengurusan Dasar Konfigurasi dan Pengusiran PRA Terbaik

Artikel ini membincangkan menggunakan JPA untuk pemetaan objek-relasi dengan ciri-ciri canggih seperti caching dan pemuatan malas. Ia meliputi persediaan, pemetaan entiti, dan amalan terbaik untuk mengoptimumkan prestasi sambil menonjolkan potensi perangkap. [159 aksara]

Kelas kelas Java melibatkan pemuatan, menghubungkan, dan memulakan kelas menggunakan sistem hierarki dengan bootstrap, lanjutan, dan pemuat kelas aplikasi. Model delegasi induk memastikan kelas teras dimuatkan dahulu, yang mempengaruhi LOA kelas tersuai


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.