如何优化Objectify关系?

时间:2017-04-11 20:04:02

标签: java google-app-engine objectify

我正在使用Google App Engine构建应用程序。我使用Objectify进行数据存储持久化。我有两个POJO课程。

@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标签的实现,但我不知道如何使用它们。

此外,Person POJO有一个Date字段。它会被正常保存吗?

1 个答案:

答案 0 :(得分: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