์ฃผ์์ฌํญ
์บ์ฑ์ค์ธ ๋ฐ์ดํฐ์ 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);
}
}
์ด๋ ๊ฒ ์ค์ ํ๋ฉด, ์ํฐํด์ ์กฐํํ ๋๋ง๋ค ์บ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ๋ํ, ์ํฐํด์ ์ ์ฅํ๊ฑฐ๋ ์์ ํ ๋๋ง๋ค ์บ์๋ฅผ ๋น์์ ํญ์ ์ต์ ์ ๋ณด๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
'๐ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ ๋ณด] ํ์๋ฆฌํ ๋ณ์ ์ฌ์ฉ(id, onclick ) (0) | 2023.07.09 |
---|---|
์ธํ ๋ฆฌ์ ์ด ํ์๋ฆฌํ th:object ๋นจ๊ฐ์ ์ค๋ฅ ์ก๊ธฐ (0) | 2023.07.02 |
[์ ๋ณด] spring boot์์ entity id ์์ฑ ์ ๋ต (0) | 2023.03.16 |
[์ ๋ณด] SQL ๋ฐ์ดํฐ ํค ๊ฐ ๋น ๊ณต๋ฐฑ ์ฑ์ฐ๊ธฐ (0) | 2023.03.15 |
[์ ๋ณด] jpa repository ์ฟผ๋ฆฌ๋ฌธ ์์ฑ ์ ์ฃผ์์ (0) | 2023.03.12 |