2009-08-27 3 views
0

Google App Engine 데이터 저장소를 사용하여 테이블을 조인 할 방법이 없으므로 엔티티 목록을 반복하고 외부 키 값을 사용하여 관련 엔티티를 하나씩 조회합니다.Google App Engine/JDO : 세션 캐시가 있습니까?

for (Employee staff: staffList){ 
    Employee manager = pm.getObjectById(Employee.class, staff.getManagerId()); 
}  

가 나는 두 번 이상 동일한 참조 된 엔터티를 필요로 할 것입니다 좋은 기회이며, 나도 같은 개체에 대한 두 배의 데이터 저장소에 가고 싶지 않아.

중복 검색을 없애기 위해 사용할 수있는 일종의 세션 캐시가 있습니까? 아니면 내 자신을 롤업해야합니까?

답변

1

JDO는 사양이 앱 엔진 JDO 기능에 대한 지원을 제공 datanculeus에 따르면, PersistenceManager에 내 인스턴스의 캐시를 강제 수행합니다 그러나

link to datanucleus cache page

, 나는 실종 여전히 몇 가지가 ARES 것을 알고있다 에서 appengine 구현에서,로 여기에 언급 :

app engine unsupported features

좋은 소식은 캐싱이 그 목록에하지 않는 것입니다. 나쁜 소식은 레벨 1 캐싱이 구현되었다는 확인을 찾을 수 없다는 것입니다. 테스트하기가 그렇게 어렵지 않아야합니다. 코드가 100 개의 서로 다른 엔티티를 얻은 다음 동일한 엔티티를 100 번 가져올 시간을줍니다.

+0

나는 그것을 시도한다. Google이 API 당 요금을 청구하므로 실제로 시간을 정할 필요가 없습니다. 따라서 할당량 요약에서 페이지가 수행 한 통화 수를 실제로 볼 수 있습니다. – Thilo

+0

brilliant! 저희가 어떻게 일했는지 알려주십시오. 그러면 다음 사람에게 문제가 생길 수 있습니다! –

+1

L1 및 L2 캐싱은 DataNucleus "코어"jar에 있기 때문에 구현됩니다. L2 캐싱은 기본적으로 켜져 있지 않습니다. – DataNucleus