2012-04-25 2 views
1

나는 모르핀을 사용하는 것이 아직했습니다,하지만 난 현재 프로젝트를 고려 중이 야. 가정하자모르핀과 객체 그래프

나는 @Reference 주석의 번호와 POJO를하고 난 데이터베이스에서 객체 그래프를 가져 오기 위해 모르핀을 부탁드립니다. 그런 다음 다른 DAO 또는 데이터 저장소 호출을 만들고 Morphia가 이미 첫 번째 그래프에서 인스턴스화 된 일부 객체를 가져 오도록 요청하면 Morphia가 이미 인스턴스화 된 객체에 대한 참조를 반환합니까 아니면 새 인스턴스를 만들겠습니까?

모르핀이 때마다 개체의 새 인스턴스를 반환하는 경우

, 사람이 어떻게 가장 좋은 방법은 이미 인스턴스 객체를 중복되지 않습니다 모르핀 백업 저장소를 생성 할 수의 추천을해야합니까? 내가 모르핀에서 볼 것처럼

답변

3

, 그것은 모든 참조를 읽어 다시됩니다. 이것은 왜 내가 Morphium을 만든 문제 중 하나입니다. 거기에 캐싱 레이어가 통합되어 있기 때문에 참조를 읽으면 다시 읽을 수 없습니다. (적어도 ID로 검색하면 ...)

1

우리는 생산에 모피 아를 사용하며 두 가지 방법으로 우리가 만났던 참조 인 참조를로드하지 않도록하십시오.

하나는 메인 클래스의 @Reference 요소를 정의 할 때 게으른 로딩 옵션을 사용하는 것입니다. 이것은 물론이 동작이 해당 객체에 대해 '전역 적'임을 의미합니다.

이렇게하는 더 좋은 방법은 Morphia를 사용하여 @Reference를 정의하지 않고 직접 참조를 관리하는 것입니다. 코드 샘플이 필요한 경우 알려주십시오.

+0

당신은 코드 샘플을 공유 할 수 있습니까? – mtariq

1

내가 너무 @Reference 사용을 중단하고 대신 같은 선언했습니다 오히려 필드 항목을하는 것보다

ObjectId itemId 

합니다. 여기에는 2 가지 이점이 있습니다 : (1) 객체 캐싱으로 작성한 도우미 getObject (...) 메소드를 통해 getter를 정의 할 수 있으며 (2) 전체 DBRef가 아닌 단순 ObjectId를 Mongo 객체에 저장합니다. 컬렉션 이름을 포함하므로 데이터 크기가 약 두 배입니다.