Cara menggunakan cache peringkat kedua Mybatis di Java
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!

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

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Panduan Nombor Sempurna di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor Perfect dalam Java?, contoh dengan pelaksanaan kod.

Panduan untuk Penjana Nombor Rawak di Jawa. Di sini kita membincangkan Fungsi dalam Java dengan contoh dan dua Penjana berbeza dengan contoh lain.

Panduan untuk Weka di Jawa. Di sini kita membincangkan Pengenalan, cara menggunakan weka java, jenis platform, dan kelebihan dengan contoh.

Panduan untuk Nombor Smith di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor smith di Jawa? contoh dengan pelaksanaan kod.

Dalam artikel ini, kami telah menyimpan Soalan Temuduga Spring Java yang paling banyak ditanya dengan jawapan terperinci mereka. Supaya anda boleh memecahkan temuduga.

Java 8 memperkenalkan API Stream, menyediakan cara yang kuat dan ekspresif untuk memproses koleksi data. Walau bagaimanapun, soalan biasa apabila menggunakan aliran adalah: bagaimana untuk memecahkan atau kembali dari operasi foreach? Gelung tradisional membolehkan gangguan awal atau pulangan, tetapi kaedah Foreach Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. Bacaan Lanjut: Penambahbaikan API Java Stream Memahami aliran aliran Kaedah Foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Niat reka bentuknya adalah

Panduan untuk TimeStamp to Date di Java. Di sini kita juga membincangkan pengenalan dan cara menukar cap waktu kepada tarikh dalam java bersama-sama dengan contoh.

Kapsul adalah angka geometri tiga dimensi, terdiri daripada silinder dan hemisfera di kedua-dua hujungnya. Jumlah kapsul boleh dikira dengan menambahkan isipadu silinder dan jumlah hemisfera di kedua -dua hujungnya. Tutorial ini akan membincangkan cara mengira jumlah kapsul yang diberikan dalam Java menggunakan kaedah yang berbeza. Formula volum kapsul Formula untuk jumlah kapsul adalah seperti berikut: Kelantangan kapsul = isipadu isipadu silinder Dua jumlah hemisfera dalam, R: Radius hemisfera. H: Ketinggian silinder (tidak termasuk hemisfera). Contoh 1 masukkan Jejari = 5 unit Ketinggian = 10 unit Output Jilid = 1570.8 Unit padu menjelaskan Kirakan kelantangan menggunakan formula: Kelantangan = π × r2 × h (4
