2010-05-20 1 views
3

JDO를 사용하는 웹 사이트를위한 태그 시스템을 구현 중입니다. this 메서드를 사용하고 싶습니다.JDO에서 태그 지정 구현하기

그러나 저는 JDO에서 관계에 처음 왔습니다. 는 간단하게하기 위해, 내가 가지고있는 것은 다음과 같습니다

@PersistentCapable 
class Post { 
@Persistent String title; 
@Persistent String body; 
} 

@PersistentCapable 
class Tag { 
@Persistent String name; 
} 

나는 JDO 관계의 어떤 종류가 필요합니까 방법을 구현하기 위해? Post에 속하는 모든 Tag을 나열 할 수 있고 또한 Tag 인 모든 Post을 나열 할 수 있기를 원합니다. 나는 이런 식으로 뭔가하고 싶은 그래서 결국 :

Table: Post 
Columns: PostID, Title, Body 

Table: Tag 
Columns: TagID, name 

Table: PostTag 
Columns: PostID, TagID 

답변

3

에서 당신이 보일 것입니다 : 당신이 PostTag을 만들 때 다음

@PersistentCapable 
class PostTag { 
    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
    private Key key; 
    /*you should add this to Post and Tag as well, 
    since this is what the fields in PostTag will reference 
    you can rename them to ClassnameID if you like, I believe*/ 

    @Persistent 
    private Key post; 

    @Persistent 
    private Key tag; 
} 

: 당신이 기본 키도의 관계 각각에 대해 두 개의 키 필드가에서 아파트 클래스 PostTag을 만들 기본적으로 http://code.google.com/appengine/docs/java/datastore/relationships.html#Unowned_Relationships

당신은 일반적으로 개인 및 액세스 t에 필드를 설정하기 때문에, 여기의 getter/setter를 사용이

PostTag pt = new PostTag(); 
pt.setPost(post.getKey()); 
pt.setTag(tag.getKey()); 
// persist pt here; 

같은 것을해야 밑줄은 접근 자 메서드를 통해 호출되지만, 그것은 사용자 호출입니다. 또한 위의 스 니펫에있는 'post'및 'tag'는 링크하려는 이미 유지 된 객체로 간주됩니다.

편집 : 앱 엔진이 부분적으로 만 JDO를 구현하기 때문에 http://code.google.com/appengine/docs/java/datastore/usingjdo.html#Unsupported_Features_of_JDO도보아야합니다. 기존의 데이터베이스와 비교하여 데이터 저장소가 다른 방식으로 작동하기 때문입니다. 그들은 미래에 누락 된 기능에 대한 지원을 추가 할 수 있습니다.

0

을 당신은 JDO가 지원하는하는 many-to-many relationship을 원한다. 그러나 App Engine은 JDO를 완전히 지원하지 않으므로 이것이 가능한지 여부는 알 수 없습니다.