2010-02-15 255 views
6

我使用DataNucleus作为JPA实现将我的类存储在我的Web应用程序中。我使用一组转换器,它们都有toDTO()fromDTO()使用JPA实体进行DTO转换

我的问题是,我想避免整个DB通过电线发送:

  • 如果我懒负载时,转换器将尝试访问所有字段,并加载然后(导致非常急切的加载)。
  • 如果我没有延迟加载,我会得到大部分数据库,因为用户包含组,并且组包含用户等等。

是否有一种方法来显式加载一些字段并将其他字段保留为NULL在我加载的类中? 我试过DataNucleus文档没有运气。

回答

3

您的DTO可能太细。即不打算为每个JPA实体设置一个DTO。如果您必须使用DTO,然后使它们更粗糙并手动构建它们。

最近我们已经把整个“转到DTO或不转到DTO,这就是问题”再次讨论。对它们的要求(特别是在JPA应用程序中)通常不再存在,但DTO的一个论据往往是该视图具有较粗略的数据要求。

+0

你的意思是说,每个视图都使用一组DTOs吗?像没有“组”字段的用户发送来查看那些不需要知道用户组的信息,等等? – WhyNotHugo 2010-02-15 15:57:21

+1

这真的取决于您的应用程序以及您如何构建它。你谈论它是一个Web应用程序,但同时你也担心通过电线发送的东西。什么电线?应用服务器和数据库之间的线路或视图与模型/控制器层之间的逻辑线路,或者浏览器AJAX呼叫和服务器之间的线路? – 2010-02-16 13:45:40

+1

主要是浏览器和服务器之间的线路,但我还想减少DB <-> java服务器数据获取trasmited以及...我想延迟加载和使用一个dto每个视图的作品,因为当转换模型为,我不会意外延迟加载不需要的数据,而只会发送视图所需的内容。这是更多的工作(更多的课程),但我看不到选择。谢谢。 – WhyNotHugo 2010-02-17 00:40:29