나는 두 속성 (AN external-id
및 subsidiary-id
[즉 외래 키이다]) 및 차 DB 키의 복합 비즈니스 키가 엔티티 (Hibernate 질의 인터페이스 JPA 주석)을 갖는다.Hibernate와 Ehcache- 모든 "select"가 엔티티 캐시를 통과하는지 어떻게 확인합니까?
"자회사와 관련하여"실행되는 JavaSE 다중 스레드 프로세스가 있으며 해당 복합 키를 사용하여 해당 엔티티를 쿼리/업데이트/삽입해야합니다 (데이터 세트가 external-ids
임).
일단 이러한 프로세스가로드되면 다른 프로세스가 해당 보조를 삽입/업데이트/제거하려고 시도하지 않을 것입니다.
내가 원하는 것은 시작시 해당 자회사의 모든 기존 엔터티를로드 한 다음한 쌍의 모든 쿼리를 캐시를 통해 이동해야하며 데이터베이스를 통과 할 수없는 경우에만 사용해야합니다. 프로세스의 스레드 중 하나가 엔터티를 삽입하는 경우 당연히 해당 캐시에 캐시를 추가하려고합니다.
최상의 행동 방침은 무엇입니까?
나는 쿼리 캐싱을 알고 있지만, 아직까지는 의 누락을 처음으로 놓칠 수 있습니다.[externalId,subsidiaryId]
쌍입니다.
덕분에 내가 대해 분명히 아니에요 아무것도가 있다면
이 업데이트가
나는 나는 그것이 있다고 생각 다시에 왔어요이 문제 그러나 지금 조사를 중지하는 것이 타당했다 문의하시기 바랍니다 쿼리 캐시와 JB Nizet의 대답 만이 적용 가능한 것입니다.
JB Nizet의 답변을 흥미로워서 사용할 것입니다. 아직 확실하지 않습니다.
안녕하세요 JB Nizet 타격 피할 수의 ID를 사용하여 개체를 얻을, 발견 된 개체
나는 다른 방법이 있다고 생각하지 않는다. 쿼리 캐시는 쿼리를 실행하여 채워질 수 있으며 이러한 쿼리는 아직 캐싱되지 않은 경우 먼저 데이터베이스로 이동합니다. –
네, 쿼리 캐시 자체와 관련하여 다른 방법이 없다는 것을 알고 있습니다. 나는 엔티티 캐시와 관련하여 다른 방식을 기대하고있었습니다. db에 가기 전에 ID를 놓친 경우 [externalId, subsidiaryId] 쌍을 찾기 위해 정의하는 것과 같은 것입니다. – Ittai