Annotaties voor Werken met Cache
In plaats van handmatig caching te beheren, kun je annotaties gebruiken die het proces automatisch afhandelen. Laten we de beschikbare annotaties bekijken.
Resultaten cachen
De @Cacheable annotatie wordt toegepast op methoden waarvan de resultaten moeten worden gecached. Wanneer de methode opnieuw wordt aangeroepen met dezelfde parameters, wordt het resultaat uit de cache gehaald.
@Cacheable(value = "usersCache", key = "#userId")
public User getUserById(String userId) {
return userRepository.findById(userId);
}
In dit voorbeeld slaat de methode getUserById het resultaat van een gebruikersquery op basis van hun ID op in een cache genaamd "usersCache". Als de methode opnieuw wordt aangeroepen met dezelfde userId, worden de gegevens uit de cache gehaald in plaats van de query uit te voeren op de database.
Cache bijwerken
De annotatie @CachePut werkt de cache bij elke keer dat de methode wordt uitgevoerd, ongeacht of het resultaat eerder is gecached.
@CachePut(value = "usersCache", key = "#user.id")
public User updateUser(User user) {
return userRepository.save(user);
}
De @CachePut annotatie wordt gebruikt om de cache te bijwerken telkens wanneer de updateUser methode wordt aangeroepen. Dit is nuttig wanneer de gegevens veranderen en je de cache moet synchroniseren met de wijzigingen in de database. De cache wordt bijgewerkt met de sleutel die overeenkomt met de gebruikers-ID.
Cache wissen
De @CacheEvict annotatie wordt gebruikt om gegevens uit de cache te verwijderen, bijvoorbeeld wanneer een gebruiker uit de database wordt verwijderd.
@CacheEvict(value = "usersCache", key = "#userId")
public void deleteUser(String userId) {
userRepository.deleteById(userId);
}
In dit voorbeeld verwijdert de deleteUser methode de vermelding uit de cache met de sleutel gelijk aan userId.
Gecombineerde cachebewerkingen
De @Caching annotatie maakt het mogelijk om meerdere cachebewerkingen uit te voeren binnen één methode, door @CachePut en @CacheEvict te combineren.
@Caching(
put = { @CachePut(value = "usersCache", key = "#user.id") },
evict = { @CacheEvict(value = "usersCache", key = "#user.id") }
)
public User updateUser(User user) {
return userRepository.save(user);
}
In dit voorbeeld werkt de updateUser methode gelijktijdig de cache bij met de nieuwe status van de gebruiker met behulp van @CachePut en verwijdert het oude item uit de cache met behulp van @CacheEvict. Dit is nuttig wanneer meerdere cachebewerkingen tegelijkertijd moeten worden uitgevoerd.
1. Wanneer zou je @CacheEvict gebruiken?
2. Wat is het doel van de @CachePut annotatie?
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 3.33
Annotaties voor Werken met Cache
Veeg om het menu te tonen
In plaats van handmatig caching te beheren, kun je annotaties gebruiken die het proces automatisch afhandelen. Laten we de beschikbare annotaties bekijken.
Resultaten cachen
De @Cacheable annotatie wordt toegepast op methoden waarvan de resultaten moeten worden gecached. Wanneer de methode opnieuw wordt aangeroepen met dezelfde parameters, wordt het resultaat uit de cache gehaald.
@Cacheable(value = "usersCache", key = "#userId")
public User getUserById(String userId) {
return userRepository.findById(userId);
}
In dit voorbeeld slaat de methode getUserById het resultaat van een gebruikersquery op basis van hun ID op in een cache genaamd "usersCache". Als de methode opnieuw wordt aangeroepen met dezelfde userId, worden de gegevens uit de cache gehaald in plaats van de query uit te voeren op de database.
Cache bijwerken
De annotatie @CachePut werkt de cache bij elke keer dat de methode wordt uitgevoerd, ongeacht of het resultaat eerder is gecached.
@CachePut(value = "usersCache", key = "#user.id")
public User updateUser(User user) {
return userRepository.save(user);
}
De @CachePut annotatie wordt gebruikt om de cache te bijwerken telkens wanneer de updateUser methode wordt aangeroepen. Dit is nuttig wanneer de gegevens veranderen en je de cache moet synchroniseren met de wijzigingen in de database. De cache wordt bijgewerkt met de sleutel die overeenkomt met de gebruikers-ID.
Cache wissen
De @CacheEvict annotatie wordt gebruikt om gegevens uit de cache te verwijderen, bijvoorbeeld wanneer een gebruiker uit de database wordt verwijderd.
@CacheEvict(value = "usersCache", key = "#userId")
public void deleteUser(String userId) {
userRepository.deleteById(userId);
}
In dit voorbeeld verwijdert de deleteUser methode de vermelding uit de cache met de sleutel gelijk aan userId.
Gecombineerde cachebewerkingen
De @Caching annotatie maakt het mogelijk om meerdere cachebewerkingen uit te voeren binnen één methode, door @CachePut en @CacheEvict te combineren.
@Caching(
put = { @CachePut(value = "usersCache", key = "#user.id") },
evict = { @CacheEvict(value = "usersCache", key = "#user.id") }
)
public User updateUser(User user) {
return userRepository.save(user);
}
In dit voorbeeld werkt de updateUser methode gelijktijdig de cache bij met de nieuwe status van de gebruiker met behulp van @CachePut en verwijdert het oude item uit de cache met behulp van @CacheEvict. Dit is nuttig wanneer meerdere cachebewerkingen tegelijkertijd moeten worden uitgevoerd.
1. Wanneer zou je @CacheEvict gebruiken?
2. Wat is het doel van de @CachePut annotatie?
Bedankt voor je feedback!