2012-08-05 3 views
5

나는 기존의 구글 애플 리케이션 엔진 자바 응용 프로그램을 jpa와 함께 실행하고 지금은 많은 다른 목적으로 객체 화하려고합니다.구글 앱 엔진 자바 대체 jpa @ OneToMany/@ ManyToOne with objectify

현재 응용 프로그램에는 엔티티의 아래 표현이 있습니다.

Class Parent{ 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private Key key; 

    @OneToMany(cascade=CascadeType.ALL, mappedBy="parent") 
    private List<Child> childs = null; 
} 

Class Child{ 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private Key key; 

    @ManyToOne 
    private Parent parent; 

} 

위의 표현을 어떻게 Objectify에서 얻을 수 있습니까? objectify4를 사용하고 있습니다.
@Parent를 본 적이 있지만 부모를 가져 오는 동안 하위 항목의 목록을 직접로드 할 수없는 것 같습니다.

감사합니다,

Ramesh.V

답변

2

객관화 관계형 데이터 저장소 및 ORM들을보다 concepts 다른 사용합니다. 관계는 Key을 사용하여 구성되며 자동으로로드되지 않습니다. Objectify here에서 관계 모델링에 대해 읽을 수 있습니다. @Parent 관계는 something special이며 1 : n 또는 n : m 관계와 관련된 것은 아닙니다.

그래서 기본적으로 당신은

class Parent { 
    Key<Child>[] childs; 
} 

class Child { 
    Key<Parent> parent; 
} 

을 그리고 당신은 Objectfy 서비스, 예를 들면 통해 개체를 얻을 것

Parent aParent = ofy.get(aChild.parent); 

느슨하게로드 된 모음이 없습니다. 당신이 명시 적으로 그것을 할 필요가있는 객체의 집합을 만들고 싶다면.

+0

덕분에 가능 부모에서 자식 키/참조를 저장하지 않고 부모로부터 자식 개체를 가져 오는 것입니다. –

+0

어소시에이션은'Key's에 의해 표현되므로'Parent' 또는'Child'에서 연관이 필요합니다. 둘 다 가지고 있다면 유지 보수하기가 어렵고 종종 유용하지 않은 양방향 연관을 만듭니다. 'Parent '에'Key' 배열을 놓을 수 있습니다. 그런 다음 Objectify의 필터링 방법을 사용하여 모든 'Child'객체를 특정 '부모'키로 가져와야합니다. 이것은 특정 기준 또는 페이징에 의해 더 많이 필터링되어야하는 많은 수의 하위 항목이있는 경우에 특히 유용합니다. –

+0

그러나 JPA는 부모 또는 자식 키를 저장하지 않고 어떻게 작동합니까? 기존의 GAE Java 응용 프로그램은 JPA를 사용하며 데이터 스토어에는 하위 또는 상위에 저장된 키가 없습니다. 그리고 부모 자식 관계 만 가지고 부모 나 자식 모두에 키가 저장되지 않습니다. 이제 내 변경 사항이 기존 데이터베이스에 영향을주지 않습니다. 내가 어떻게 해. 자세한 설명을 주셔서 감사합니다. –