2017-04-11 59 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

请更新您的问题描述以包含字段搜索。 –