Fungsi caching pertanyaan dalam rangka kerja Hibernate boleh meningkatkan prestasi pertanyaan dan mengelakkan pelaksanaan pertanyaan berulang dengan menyimpan hasil pertanyaan. Prinsip kerjanya ialah caching dua peringkat, termasuk peringkat sesi dan peringkat global, dan caching didayakan melalui anotasi @Cacheable. Data cache dikongsi oleh semua Sesi sehingga dikosongkan atau tamat tempoh secara jelas. Kaedah untuk mengosongkan cache secara eksplisit termasuk session.clear() atau session.evict(), dan pembersihan telus dilakukan secara automatik apabila keputusan pertanyaan berubah.
Caching Pertanyaan dalam Rangka Kerja Hibernate
Gambaran Keseluruhan
Caching pertanyaan ialah ciri yang disediakan oleh rangka kerja Hibernate yang meningkatkan prestasi pertanyaan dengan menyimpan hasil pertanyaan. Apabila pertanyaan berikutnya mengenai cache, Hibernate mengembalikan keputusan terus daripada cache dan bukannya melaksanakan semula pertanyaan.
Cara ia berfungsi
Cache pertanyaan Hibernate ialah cache dua peringkat, termasuk:
Apabila Hibernate melaksanakan pertanyaan, ia mula-mula menyemak cache tahap pertama. Jika keputusan pertanyaan tiada dalam cache tahap pertama, ia akan melaksanakan pertanyaan dan cache keputusan dalam cache tahap pertama.
Jika caching pertanyaan didayakan, Hibernate juga akan cache hasil pertanyaan ke dalam cache peringkat kedua. Keputusan dalam cache peringkat kedua akan dikongsi oleh semua Sesi sehingga dikosongkan secara eksplisit atau cache tamat tempoh.
Kes praktikal:
Andaikan kami mempunyai entiti Pekerja
dan kami kerap melaksanakan pertanyaan untuk mencari pekerja tertentu: Employee
实体,并且我们频繁执行查找特定员工的查询:
Query query = session.createQuery("from Employee where id = :id"); query.setParameter("id", employeeId); List<Employee> employees = query.list();
为了缓存这个查询结果,我们可以使用 @Cacheable
注解:
@Entity @Cacheable public class Employee { // ... }
这样,当我们执行相同的查询时,Hibernate 会先从缓存中查找结果。如果缓存中没有结果,它才会执行查询并缓存结果。
清除缓存
有两种主要方式可以清除 Hibernate 缓存:
session.clear()
或 session.evict()
rrreee@ Boleh Cache
Nota: Terdapat dua cara utama untuk mengosongkan cache Hibernate:
session.clear()
atau session.evict() kaedah
. Atas ialah kandungan terperinci Bagaimanakah caching pertanyaan berfungsi dalam rangka kerja Hibernate?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!