Java Sprinboot Caching nasıl yapılır?

xgravity

Picopat
Katılım
12 Mayıs 2025
Mesajlar
393
Çözümler
3
Daha fazla  
Cinsiyet
Erkek
Arkadaşlar Java Springboot'da caching nasıl yapılır?


Java:
@Service
public class Service {

    // bağımlılıklar inject edildi
   
    // 1.Kısım
    @Cacheable(key = "persons", "#result.id") // 1.kısım result dönen nesneyi ifade eder
    public List<PersonDTO> getUsers() {...}

     // 2. Kısım
    @Cacheput(key="persons", value #result.id) // result dönen nesneyi ifade eder
    public PersonDTO createPerson(PersonDTO personDTO) {
        ...
        ...
        return personMapper.modelToDTO(personDTO);
     
    }
     // 3. kısım
    @Cacheput(key="persons", value = #updatePerson.id) // paremetredeki değerin id'sini alır
    public PersonDTO updatePerson(UpdatePerson updatePerson)
   


}

Arkadaşlar şimdi 1. kısımda dönen listedeki verileri cache ediliyor. Listedeki tüm öğelerin hepsi, tek tek #result.id diye mi kaydediliyor yoksa bir bütün olarak bir liste sadece #result.id diye mi kaydediliyor anlayamadım.

2. kısım ve 3. kısımda id'ye göre, dönen değerleri, "persons" cache alanında karşılığı varsa güncelliyor, yoksa ekliyor. diye biliyordum.

Arkadaşlar veri eklediğim zaman, güncel veri, ancak Springboot'u yeniden başlatınca geliyor. Cache hiç güncellenmiyor yani.

Springboot'u başlatan uygulamama @EnableCaching işareti de ekledim.

Bu sorunu nasıl çözerim?
 
Son düzenleyen: Moderatör:
Kodu yanlış paste etmiş olmalısınız, @Cacheable(key = "persons", "#result.id") bu haliyle compile bile olmaz kod, annotationun attribute bilgisi eksik, sizin key ve value değerlerinin de yer değiştirmesi gerek diye hatırlıyorum yani mesela result.id value değil key olmalı.

Hangi kaynaktan yararlanıyorsanız tekrar güzelce baştan inceleyin.
 
Kodu yanlış paste etmiş olmalısınız, @Cacheable(key = "persons", "#result.id") bu haliyle compile bile olmaz kod, annotationun attribute bilgisi eksik, sizin key ve value değerlerinin de yer değiştirmesi gerek diye hatırlıyorum yani mesela result.id value değil key olmalı.

Hangi kaynaktan yararlanıyorsanız tekrar güzelce baştan inceleyin.
Bilmiyorum, bu konuda yeniyim. Result.id her bir listenin tek tek id'sine göre cacheliyor diye anladım orayı galiba ama herhalade key belirtmeye gerek yok liste için. Çalışayım biraz daha.

@count hocam, kaynak önerir misiniz?
 
Son düzenleme:
Bilmiyorum, bu konuda yeniyim. Result.id her bir listenin tek tek id'sine göre cacheliyor diye anladım orayı galiba ama herhalade key belirtmeye gerek yok liste için. Çalışayım biraz daha.

@count hocam, kaynak önerir misiniz?
Direkt önerebileceğim kaynak bilmiyorum ama springin kendi kaynağından Getting Started | Caching Data with Spring ya da A Guide To Caching in Spring | Baeldung gibi kolayca bulabileceğin kaynaklardan kurcalayabilirsin.
 

Technopat Haberler

Yeni konular

Geri
Yukarı