Dev/Spring

[SpringBoot] 스프링부트에서 캐싱하기 (Cache in Springboot)

ssyoni 2022. 2. 5. 23:23
반응형

Cache

메인 화면에 뿌려지는 공지사항과 같이 데이터 변경이 잦지 않고 반복적으로 같은 데이터를 조회할 경우에 매번 DB에 접근해서 가져오는 것은 효율적이지 못하다. 때문에 이러한 데이터들을 캐싱 작업을 함으로써 매번 DB에 접근하지 않고 빠른 속도로 데이터를 뿌려줄 수 있다.

Caching annotation

  • @Cacheable : 캐시 저장
  • @Cacheput : 캐시 갱신
  • @CacheEvict : 캐시 삭제

기본적으로 캐싱 어노테이션은 Spring AOP를 통해 처리된다.

주의사항

  • pulbic method에만 사용가능
  • 같은 객체 내의 method끼리 호출 시에는 @Cacheable이 설정되어있어도 캐싱되지 않음

스프링 부트에서 캐시 사용하기

캐시 의존성 추가


		
			org.springframework.boot
			spring-boot-starter-cache
			2.4.3
		

Application 클래스에 @EnableCacheable 선언

@EnableCaching
@SpringBootApplication
public class SpringProjectApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringProjectApplication.class, args);
	}

}

캐시 등록/업데이트/삭제 어노테이션

@Cacheable

@Cacheable(value = "menu")
    public List<OrderEntity> getOrderMenu(){
        System.out.println("메뉴 조회 / 캐시 저장 ");
        List<OrderEntity> menu = repository.findAll();
        return menu;
    }

@Cacheput
: 캐시 저장. 기존에 캐시 데이터가 있다면 업데이트

@CachePut(value = "menu")
    public OrderEntity updateMenu(OrderEntity menu){
        System.out.println("메뉴 수정 / 캐시 업데이트");
        OrderEntity result = repository.save(menu);
        return result;
    }

@CacheEvict
: 캐시 삭제

@CacheEvict(value = "menu", allEntries = true)
    public String deleteMenu(){
        System.out.println("캐시 삭제");
        return "삭제 완료";
    }



참조 :
https://www.notion.so/Cache-740e374bf4e04c8cb6cadc2256792226#a87fb405215f4eedada31c4b37e3d413

Cache

Cache

www.notion.so


반응형