2017-03-29 4 views
0

특정 테이블.캐시 (잠재적으로) 자바 데이터베이스에서 값을 변경 내가 삽입 또는 업데이트가 일어나는 때 캐시를 업데이트하는 특정 방법을 찾고 <p>자바</p>에 캐시 된 데이터를 저장하기위한 현재 권장되는 방법은 무엇

데이터를 상호 참조 할 때 문제가 발생하지 않도록 가능한 한 빨리 처리하는 것이 가장 이상적입니다.

내가 제공 할 수있는 (ehcache와 같은) 또는 권고 된 프로그래밍 표준을 제공하는 기술이 있습니까?

감사

+1

우연히 스프링 프레임 워크를 사용합니까? –

+0

유감스럽게도 Spring을 사용하지 않습니다. – Biscuit128

+1

유스 케이스가 캐시를 비우는 지, 아니면 * 누군가 * 데이터베이스에서 데이터베이스를 업데이트 할 때 (심지어 애플리케이션 외부에서도) 캐시가 비워 졌습니까? –

답변

1

Spring cache abstraction? Ehcache 나 Redis 같은 구현 된 캐시 제공자가 많이 있습니다. 당신이 당신의 응용 프로그램에서 스프링 프레임 워크에 액세스 할 수있는 경우

1

당신은 같은 것을 할 수 있습니다 장면 뒤에

@Cacheable(value="yournamescache") 
public List<String> getNames(){ 
    return yourDao.findAll(); 
} 

@CacheEvict(value="yournamescache") //a value has changed so clear cache when this method executes 
public void updateNames(x) { 
    yourDao.update(x); 

} 

예를 들어으로 Ehcache를 사용합니다.

당신은 내가으로 Ehcache에 대해 이야기하지만 다른 캐싱 프레임 워크에서 유사한 기능이 있어야 여기 Spring cache abstraction

1

자세한 정보를 찾을 수 있습니다.

정말 트랜잭션이 필요한지 여부에 달려 있습니다. Ehcache의 두 가지 기능이 도움이 될 수 있습니다.

  • XA는으로 Ehcache이 DB
  • Loader-writer 같은 거래에서 캐시에 투입해야합니다. 대/소문자를 쿼리 할 때 데이터베이스의 데이터를로드하고 데이터베이스에 쓸 때 캐시에 기록합니다. 따라서 그들은 둘 다 동기화 상태를 유지합니다.

물론 스프링 캐쉬가 필요할 경우 모두 사용할 수 있습니다.