Hazırda bekletme modunun ikinci seviye önbelleğe ne zaman ulaştığını ve önbelleği ne zaman geçersiz kıldığını anlamakta güçlük çekiyorum.
Şu anda anladığım şey bu:
- İkinci seviye önbellek, oturumlar arasında varlıkları saklar, kapsam SessionFactory'dir
- Hangi varlıkların önbelleğe alınacağını söylemelisiniz, varsayılan olarak hiçbir varlık önbelleğe alınmaz
- Sorgu önbelleği, sorgu sonuçlarını önbellekte depolar.
Anlamadığım şey
- Hazırda bekletme bu önbelleğe ne zaman ulaşır?
- Diyelim ki ikinci seviye önbelleği kurdum ama sorgu önbelleğini ayarlamadım. Müşterilerimi önbelleğe almak istiyorum, 50000 tane var. Müşterileri önbellekten hangi yollarla alabilirim?
- Önbellekten id ile alabileceğimi varsayıyorum. Bu kolay olur ama aynı zamanda önbelleğe almaya değmez. Ama ya tüm müşterilerimle bazı hesaplamalar yapmak istersem. Diyelim ki müşterilerin bir listesini göstermek istiyorum, o zaman onlara nasıl erişebilirim?
- Sorgu önbelleğe alma devre dışı bırakılırsa tüm müşterilerimi nasıl edinirim?
- Biri müşterilerden birini güncellediğinde ne olur?
- Bu müşteri önbellekte geçersiz mi olur yoksa tüm müşteriler geçersiz mi olur?
Yoksa önbelleğe almayı tamamen yanlış mı düşünüyorum? Bu durumda ikinci seviye önbelleğin daha uygun kullanımları nelerdir? Hazırda bekletme belgeleri, önbelleğin gerçekte nasıl çalıştığı hiç de net değildir. Sadece nasıl kurulacağına dair talimatlar var.
Güncelleme: Böylece, ikinci seviye önbelleğin (sorgu önbelleği olmadan) verileri id'lere göre yüklemek için iyi olacağını anladım. Örneğin, bir web uygulamasındaki her istekte izinleri kontrol etmek istediğim kullanıcı nesnem var. Bu, kullanıcıyı ikinci seviye önbelleğe alarak veritabanı erişimini azaltmak için iyi bir durum olur mu? Kullanıcı kimliğini oturumda veya izinleri kontrol etmem gereken her yerde saklayacağım gibi, kullanıcıyı kimliğine göre yükler ve izinleri kontrol ederdim.