在具有不同字段子集的端点和 Objectify 之间共享 class
Share class between endpoint and Objectify with different field subset
说这是我的 类
@Entity
public class Library{
...
}
@Entity
public class Book{
@Load
@Parent
@ApiResourceProperty(ignored = AnnotationBoolean.TRUE)
private Ref<Library> libraryRef;
@Ignore
private Library library;
}
我想发送 List<Book>
给 "android" 客户端:我不希望 android 客户端获得 libraryRef
但我希望客户端获得 library
这是我现在的数据访问方式
public static List< Book > getAllBooks(){
return OfyService.ofy().load().type(Book.class).list();
}
我的端点只是 return List<Book>
到 android。我相信我已经完成了第一部分:确保数据存储不存储 library
,而是存储 libraryRef
。但是我如何完成第二部分:确保客户端获得 library
?
我确定它还没有加载。我如何确保它已加载?我是否必须使用自己的 for 循环进行迭代?
对于使用客户端和服务器之间共享代码的任何人,我的建议是在您的 API 对象和域对象之间进行清晰的分离。预先制作 DTO 需要做更多的工作,但它使您的整个系统更加灵活——如果您想更改您的域对象,您不会冒险破坏无数的移动 phone 应用程序,这些应用程序运行缓慢(或不存在)升级周期。
说这是我的 类
@Entity
public class Library{
...
}
@Entity
public class Book{
@Load
@Parent
@ApiResourceProperty(ignored = AnnotationBoolean.TRUE)
private Ref<Library> libraryRef;
@Ignore
private Library library;
}
我想发送 List<Book>
给 "android" 客户端:我不希望 android 客户端获得 libraryRef
但我希望客户端获得 library
这是我现在的数据访问方式
public static List< Book > getAllBooks(){
return OfyService.ofy().load().type(Book.class).list();
}
我的端点只是 return List<Book>
到 android。我相信我已经完成了第一部分:确保数据存储不存储 library
,而是存储 libraryRef
。但是我如何完成第二部分:确保客户端获得 library
?
我确定它还没有加载。我如何确保它已加载?我是否必须使用自己的 for 循环进行迭代?
对于使用客户端和服务器之间共享代码的任何人,我的建议是在您的 API 对象和域对象之间进行清晰的分离。预先制作 DTO 需要做更多的工作,但它使您的整个系统更加灵活——如果您想更改您的域对象,您不会冒险破坏无数的移动 phone 应用程序,这些应用程序运行缓慢(或不存在)升级周期。