2017-04-11 61 views
0

我正在用Google App Engine構建應用程序。我使用Objectify來實現數據存儲的持久性。我有兩個POJO課。如何優化Objectify關係?

@Entity 
public class Book 
{ 
    @Id private Long id; 
    private String name; 
    private String isbn; 
    private String author; 
} 

@Entity 
public class Person { 
    @Id private String email; 
    private String password; 
    private String name; 
    private List<Book> myBooks; 
} 

一個人可以包含很多書,但書只屬於一個人。目前我正在保存這樣的數據。

//data from Front-end 
Person p = new Person(email, password, name); 
PersonDAO dao = new PersonDAO(); 
dao.save(p); 

//... 
//data from Front-end 
Book b = new Book(name, author, isbn); 
BookDAO daoBook = new BookDAO(); 
daoBook.save(b); 

//... 
Person q = dao.load(email); 
q.addBook(b); 
dao.save(q); 

ObjectifyService OFY()與方法DAO類實現。

這沒關係我的實施?我如何優化關係?每次我需要創建一本書時,它都會像Entity一樣保存,但我需要與某個人的關係,因此我將兩次保存書籍。我已經看到Key,Ref @Load標籤的實現,但我不知道如何使用它們。

此外,人POJO有一個日期字段。它會正常保存嗎?

回答

0

它已經是相當長一段時間,因爲我寫了這個代碼,但這裏有雲:

@Entity 
public class Book { 

    @Id 
    private Long id; 

    @Parent 
    @ApiResourceProperty(ignored = AnnotationBoolean.TRUE) 
    private Key<User> user; 

    private String author; 

    private String isbn; 

    private String name; 

} 

看看Udacity Conference Central全例子。這是Developing Scalable Apps in Java with Google App Engine的最後一個項目,由Udacity

+0

該代碼可以用於識別所有者的書,但如果我想查找有一個人的書,我需要在每本書中進行搜索。不過,非常感謝。其實,我正在開發一個android應用程序,你的示例代碼和udacity mooc對我來說可能很有用。 – Reyjhonny

+0

這就是你如何在'User'和'Book'之間建立一對多的關係。您還可以創建索引以便通過特定字段進行搜索,例如'user'。不要忘記,您需要在Google App Engine上創建索引,並且他們已付款。 –

+0

請更新您的問題描述以包含字段搜索。 –