Rumah > Java > javaTutorial > Bagaimanakah caching pertanyaan berfungsi dalam rangka kerja Hibernate?

Bagaimanakah caching pertanyaan berfungsi dalam rangka kerja Hibernate?

王林
Lepaskan: 2024-04-17 22:12:01
asal
953 orang telah melayarinya

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.

Hibernate 框架中查询缓存如何工作?

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:

  • Cache peringkat pertama (Peringkat sesi): Cache terpencil sementara yang mengandungi semua data dalam semasa Entiti Hibernate Sesi.
  • Cache peringkat kedua (peringkat global): Cache pilihan, tersedia secara global yang digunakan untuk meneruskan hasil pertanyaan.

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();
Salin selepas log masuk

为了缓存这个查询结果,我们可以使用 @Cacheable 注解:

@Entity
@Cacheable
public class Employee {
    // ...
}
Salin selepas log masuk

这样,当我们执行相同的查询时,Hibernate 会先从缓存中查找结果。如果缓存中没有结果,它才会执行查询并缓存结果。

清除缓存

有两种主要方式可以清除 Hibernate 缓存:

  • 显式清除:使用 session.clear()session.evict()rrreee
  • Untuk cache hasil pertanyaan ini, kami boleh menggunakan @ Boleh Cache Nota:
  • rrreeeDengan cara ini, apabila kami melaksanakan pertanyaan yang sama, Hibernate akan terlebih dahulu mencari hasil daripada cache. Ia hanya akan melaksanakan pertanyaan dan cache keputusan jika tiada keputusan dalam cache.
Kosongkan cache

Terdapat dua cara utama untuk mengosongkan cache Hibernate:

    Pembersihan eksplisit:
  • Gunakan session.clear() atau session.evict() kaedah .
  • Pembersihan telus:
Hibernate mengosongkan cache secara automatik apabila keputusan pertanyaan berubah. 🎜🎜🎜🎜Kesan Prestasi🎜🎜🎜Caching pertanyaan boleh meningkatkan prestasi pertanyaan dengan ketara, terutamanya untuk pertanyaan yang kerap dilaksanakan. Walau bagaimanapun, terdapat beberapa perkara yang perlu diberi perhatian: 🎜🎜🎜Cache boleh mengambil banyak memori. 🎜🎜Jika data cache dikemas kini dengan kerap, anda perlu melumpuhkan cache atau mengosongkan cache dengan kerap. 🎜🎜

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan