2012-05-14 7 views
0

내가 객관화 할 새로운 오전과 내가 가장 지속 할 내가 그들을 위해하려는 경우 필드가 개인을 할 수있는 코드@Embedded & @ 아이디 질문

public class Uid { 
@Id private String name; // e-mail id 
    private String oauth2_token; // A token 
... // constructors/setters/getters 
}; 

public class Message { 
@Id Long msg_id; 
private String message; 
@Embedded private Uid uid; 
... // constructors/setters/getters 
}; 
  1. 에 예시되어 몇 가지 의심을했다?
  2. 클래스 UID이 필드는 UID 다음 @Id, 표시 전혀이 허용 클래스로 @Embedded메시지 상이한 유형이라도. 별도 @Id 필드 (갖는다이다 및 보유 예 있다면,/예외가주의 사항입니까?

들으와 환호.

+0

Uid 클래스에 @Id 주석을 두 개 사용 하시겠습니까? 그렇다면 틀린 것입니다 ... 하나의 필드 만 클래스 당 ID를 보유 할 수 있습니다. –

+0

잘못 추가 된 ** @ Id ** 입력란에 대해 사과드립니다. U r 오른쪽, ** Uid **의 ** @ Id ** 필드 하나만을위한 것입니다. – pbhowmick

답변

-1

1) 예, 민간 분야는 지속됩니다. @Indexed, @NotIndexed 또는 @NotSaved를 사용하여 모든 필드에 주석을 달 것을 권장합니다.

2) 나는 그것이 괜찮다고 생각합니다. 적어도 Objectify 내에서 작동 할 것이라고 생각하지만, 그것이 의미하는 바가 무엇인지 의미하는지 확실히 판단해야합니다. 어쩌면 Uid를 일반적인 독립형 엔티티로 만들려고하지만 메시지 중 일부는 포함시킬 수 있습니까? 참조 : http://code.google.com/p/objectify-appengine/wiki/IntroductionToObjectify#@Embedded

GAE Java/JDO 문서에서는 또한 임베디드 클래스에 대해서도 설명합니다. 그것은 JDO에서 조금 다른,하지만 어쩌면 도움이 배경 자료입니다 : https://developers.google.com/appengine/docs/java/datastore/jdo/dataclasses#Embedded_Classes

또 다른 옵션 대신, 메시지에 Key<Uid> 같은 것을 사용하는 것입니다,하지만 당신이 그것으로 무엇을하는지에 따라 달라집니다.

+0

# 2가 잘못되었습니다. 객관화는 jdo와 전혀 관계가 없습니다. 객체 화를 사용한다면 jdo에 대해 알고있는 모든 것을 잊어 버리는 것이 도움이됩니다 (그러나 큰 테이블에 대해 할 수있는 모든 것을 배우십시오). –

+0

나는 그 안에 \ @Id 필드가있는 임베디드 클래스를 갖는 것이 허용되는지 아닌지에 관한 질문이라고 생각한다. Objectify 3.1을 사용한 간단한 테스트는 포함 된 클래스가 \ @Id로 표시된 필드를 가질 수 있음을 나타냅니다. 그러나 해당 필드는 엔티티에서 특별한 작업을 수행하지 않습니다. 시도 해봐.Rick, GAE/JDO에 대해 언급하지 말았어야 올바른지도 모르지만 다른 한편으로는 Google 문서가 Objectify 문서의 목적을 더 잘 설명한다고 생각했습니다. –

+0

원하는 필드로 주석을 달 수는 있지만 그렇게 할 수는 없습니다. 주석의 목적 인 키의 일부로 생각하면 틀립니다. –

1

1) 예

2) 아니오, 임베디드 클래스는 객관화의 @Id이 없습니다. 여기에서 문서를 읽어야합니다. http://code.google.com/p/objectify-appengine/wiki/IntroductionToObjectify#@Embedded

포함은 실제로 포함 된 클래스를 둘러싸는 개체와 동일한 테이블에 병합합니다. appengine의 ID는 매우 구체적이며 데이터 저장소 키를 만드는 데 사용됩니다. 데이터 저장소에 실제로 엔티티를 나타내지 않는 클래스에 ID를 갖는 것은 의미가 없습니다.

오브젝트 화의 임베디드 오브젝트에 대한 개념은 오브젝트를 Java 세계에서 별도의 오브젝트로 취급하려는 것이지만 성능상의 이유로 오브젝트에 대해 조회하려고한다는 것입니다. 이런 종류의 일은 bigtable에서 조인이 부족하다는 것을 의미합니다 (어쨌든 몇 가지 사용 사례의 경우). 둘러싸는 클래스를 기준으로 속성을 쿼리 할 수 ​​있습니다.