我正在使用DataNucleus作为JPA实现来将我的类存储在我的Web应用程序中。我使用了一组转换器,它们都有toDTO()
和fromDTO()
。
我的问题是,我想避免整个数据库通过网络发送:
有没有办法在我加载的类中显式加载某些字段并将其他字段保留为NULL? 我没有运气就尝试过DataNucleus文档。
答案 0 :(得分:3)
你的DTO可能太精细了。即不打算每个JPA实体拥有一个DTO。如果你必须使用DTO,那么让它们更粗糙并手动构建它们。
最近我们已经把整个“转到DTO或不转到DTO,这就是问题”再次讨论。对它们的要求(特别是在JPA应用程序的上下文中)通常不再存在,但FOR DTO的一个论点往往是视图具有较粗糙的数据要求。
答案 1 :(得分:0)
要仅加载您真正需要的数据,您将需要使用一个定制的select子句,其中仅包含您将用于DTO的这些元素。我知道这是多么痛苦,尤其是在涉及联接时,这就是为什么我创建Blaze-Persistence Entity Views的原因,该工作将使查询高效。
您将DTO定义为具有到实体的映射的接口,使用属性名称作为默认映射,这看起来非常简单,并且很像实体的子集,尽管不是必须的。您可以使用任何JPQL表达式作为DTO属性的映射。