๐Ÿžํ”„๋กœ๊ทธ๋ž˜๋ฐ

[์ •๋ณด] Spring Boot Cache ์‚ฌ์šฉ๋ฐฉ๋ฒ• ๋ฐ ์ฃผ์˜ ์‚ฌํ•ญ

TwoIceFish 2023. 3. 21. 08:09

์ฃผ์˜์‚ฌํ•ญ

์บ์‹ฑ์ค‘์ธ ๋ฐ์ดํ„ฐ์— save ๋“ฑ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ ์ž ํ•  ๋•Œ ๋น„๊ต๊ตฌ๋ฌธ์ด ์žˆ์œผ๋ฉด ๋ฐ˜๋“œ์‹œ  @CacheEvict ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ์บ์‹œ๋ฅผ Purgeํ•˜๊ณ  ํ•ด์•ผ ๊ฐ’์˜ ์ค‘๋ณต์‚ฝ์ž…์„ ๋ฐฉ์ง€ํ•  ์ˆ˜์žˆ๋‹ค.

 

์„ค์ •๋ฐฉ๋ฒ•

Spring Boot์—์„œ ์บ์‹ฑ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด, ๋จผ์ € @EnableCaching ์–ด๋…ธํ…Œ์ด์…˜์„ ํ†ตํ•ด ์บ์‹ฑ์„ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์•„ํ‹ฐํด ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์บ์‹ฑ์„ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

1.์บ์‹ฑ์„ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด, ๋ฉ”์ธ ๋ฉ”์†Œ๋“œ์— ์žˆ๋Š” ํด๋ž˜์Šค์— @EnableCaching ์–ด๋…ธํ…Œ์ด์…˜์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

@SpringBootApplication
@EnableCaching
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

2.์กฐํšŒํ•˜๋Š” Repository ๋ฉ”์†Œ๋“œ์— @Cacheable ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์บ์‹œ๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์—์„œ๋Š” 'articles' ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

@Repository
public interface ArticleRepository extends JpaRepository<Article, Long> {
    @Cacheable(value = "articles")
    List<Article> findAll();
}

 

3.์ƒˆ๋กœ์šด ์•„ํ‹ฐํด์„ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ์•„ํ‹ฐํด์„ ์ˆ˜์ •ํ•  ๋•Œ, ์บ์‹œ๋ฅผ ๋น„์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด @CacheEvict ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ˆ์—์„œ๋Š” ์บ์‹œ๋ฅผ ๋น„์šฐ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— ์•„ํ‹ฐํด์„ ์ €์žฅํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

@Service
public class ArticleService {

    private final ArticleRepository articleRepository;

    public ArticleService(ArticleRepository articleRepository) {
        this.articleRepository = articleRepository;
    }

    @CacheEvict(value = "articles", allEntries = true)
    public Article save(Article article) {
        return articleRepository.save(article);
    }
}

์ด๋ ‡๊ฒŒ ์„ค์ •ํ•˜๋ฉด, ์•„ํ‹ฐํด์„ ์กฐํšŒํ•  ๋•Œ๋งˆ๋‹ค ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์•„ํ‹ฐํด์„ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ๋•Œ๋งˆ๋‹ค ์บ์‹œ๋ฅผ ๋น„์›Œ์„œ ํ•ญ์ƒ ์ตœ์‹  ์ •๋ณด๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.