Mybatis berisi fitur cache kueri yang sangat kuat yang dapat dikonfigurasi dan disesuaikan dengan sangat mudah. Secara default, cache tidak diaktifkan. Untuk mengaktifkan cache Level 2, Anda perlu menambahkan baris ke file pemetaan SQL Anda:
<cache/>
Itu secara harfiah. Efek dari pernyataan sederhana ini adalah sebagai berikut:
1. Semua pernyataan pilih dalam file pernyataan pemetaan akan di -cache.
2. Peta Semua Sisipkan, Perbarui, dan Hapus Pernyataan dalam File Pernyataan akan menyegarkan cache.
3. Cache akan diceritakan kembali menggunakan algoritma yang paling tidak baru digunakan (LRU, yang paling tidak baru digunakan).
4. Menurut jadwal (seperti tidak ada interval flush, tidak ada interval penyegaran), cache tidak akan disegarkan dalam urutan kronologis apa pun.
5. Cache menyimpan 1024 referensi ke koleksi atau objek daftar (terlepas dari apa yang dikembalikan metode kueri).
6. Cache akan dianggap sebagai cache baca/tulis (dapat dibaca/ditulis), yang berarti bahwa pengambilan objek tidak dibagikan dan dapat dimodifikasi dengan aman oleh penelepon tanpa mengganggu modifikasi potensial yang dibuat oleh penelepon atau utas lain.
Semua properti ini dapat dimodifikasi oleh properti elemen cache. Misalnya:
<cache gusuran = "fifo" flushInterval = "60000" size = "512" readonly = "true"/>
Konfigurasi yang lebih canggih ini menciptakan cache FIFO dan menyegarkan setiap 60 detik, menyimpan 512 referensi ke objek atau daftar hasil, dan objek yang dikembalikan dianggap hanya baca, sehingga memodifikasinya di antara penelepon di utas yang berbeda menghasilkan konflik.
Strategi pengambilan yang tersedia adalah:
Standarnya adalah LRU.
FlushInterval dapat diatur ke bilangan bulat positif apa pun, dan mereka mewakili periode waktu milidetik yang masuk akal. Standarnya tidak diatur, yaitu, tidak ada interval penyegaran, dan cache hanya disegarkan ketika pernyataan itu dipanggil.
Ukuran (jumlah referensi) dapat diatur ke bilangan bulat positif apa pun, mengingat jumlah objek yang Anda cache dan jumlah sumber daya memori yang tersedia di lingkungan lari Anda. Nilai defaultnya adalah 1024.
Properti ReadAnly dapat diatur ke True atau False. Cache hanya-baca mengembalikan instance yang sama dari objek cache kepada semua penelepon. Oleh karena itu, benda -benda ini tidak dapat dimodifikasi. Ini memberikan keunggulan kinerja yang penting. Cache yang dapat dibaca dan ditulis mengembalikan salinan objek cache (berdasarkan serialisasi). Ini akan lebih lambat, tetapi aman, jadi salah secara default.
Menggunakan cache khusus
Selain metode cache khusus ini, Anda juga dapat sepenuhnya mengganti perilaku cache dengan menerapkan cache Anda sendiri atau membuat adaptor untuk skenario cache pihak ketiga lainnya.
<cache type = ”com.domain.something.mycustomcache”/>
Contoh ini menunjukkan cara menggunakan implementasi cache khusus. Kelas yang ditentukan oleh atribut Type harus mengimplementasikan antarmuka org.mybatis.cache.cache. Antarmuka ini adalah salah satu dari banyak antarmuka kompleks dalam kerangka Mybatis, tetapi tidak apa -apa untuk hanya memberikan apa yang dilakukannya.
Public Interface Cache {String getId (); int getSize (); void putobject (kunci objek, nilai objek); Objek getObject (kunci objek); boolean haskey (kunci objek); Object RemestObject (Kunci Objek); void clear (); Readwritelock getReadWritelock (); } Cache referensi
Mungkin suatu saat di masa depan, Anda akan ingin berbagi konfigurasi dan instance cache yang sama di namespace. Dalam hal ini Anda dapat menggunakan elemen cache-ref untuk merujuk cache lain.
<cache-ref namespace = ”com.someone.application.data.somemapper”/>