2010-06-01 5 views
1

JDO는 데이터베이스 모델의 모든 하위를 한 번에 가져올 수 있습니까?JDO (Datanucleus)로 아이들을 열망하는 것

처럼 : 내 경우

class Parent { 
@Persistent(mappedBy="parent") 
private Set<Children> children; 
} 

class Children { 
@Persistent 
private Parent parent; 
@Persistent 
private String name; 
} 

, 나는 내가 한 번에 가져올 부모의 수가 많다. 그런 다음 아이들을 게으 르면 느슨하게 가져 오기 때문에 많은 시간이 걸립니다.

JDO (Datanucleus)는 한 번에 가져 오기를 지원합니까, 부모와 동거합니까?

또 다른 쿼리를 사용하여 모든 자식을 독립적으로 가져 와서 나중에 레벨 2 캐시에 넣으려고했지만 여전히 가져온 것입니다 (아마 jdo는 관계를 알 수 없습니까? ForeignKey (parent-id) hasn ' t는 처음에 가져 왔습니까?)

데이터 구조를 더 빠르게 읽는 방법은 무엇입니까?

건배,

답변

3

월 당신은 Fetch Groups를 사용하고 있습니까? 하위 클래스는 기본 가져 오기 그룹에없는 것 같습니다. 객체는 일반적으로 JDO 데이터 저장소로부터 검색 될 때

모든 필드는 즉시 검색되고 없다. 효율성을 위해 에만 특정 필드 유형이 객체의 초기 액세스에서 검색 이기 때문에이 는 다음 다른 객체 (게으른 로드)를 액세스 할 때 검색 이다. 이로드 된 필드 그룹을 가져 오기 그룹이라고합니다.

+0

나는 FetchGroups를 사용하지만, 내가 이해하지 못하는 한, 한 번에 가져 오는 것은 제어하지 않지만 (예를 들어) 분리되는 것은 제어합니다. 동의하니? 나는 물건을 분리하고 싶지 않다. 위의 특별한 경우에는 필요하지 않습니다. (또한 분리는 컬렉션의 모든 하위 항목을 한 번에 가져 오지 않습니다.) – Jan

+0

가져 오기 계획은 첨부/분리 및 AND * 한 번에 가져 오는 항목 모두에 적용됩니다. "FetchPlan은 PersistenceManager.getObjectById()를 호출하는 것뿐만 아니라 PersistenceManager.newQuery(), PersistenceManager.getExtent(), PersistenceManager.detachCopy 및 훨씬 더 많이 호출하는 데에도 적용됩니다." –

관련 문제