jpa会回收什么收藏品?

时间:2012-06-10 22:49:50

标签: java list jpa eclipselink

JPA(在这种情况下是Eclipselink)是否总是返回IndirectList,其中Entity有一个List? 是没有该列表或它应该转换为另一个列表(可能是链表)?

2 个答案:

答案 0 :(得分:3)

分析

如果我们查看EclipseLink的IndirectList's API,它会说:

  

使用IndirectList:使用IndirectList(jdk1.1)或Collection / List / Vector(jdk1.2)类型声明相应的实例变量。

     

TopLink会在实例变量中放置一个IndirectList   包含域对象从数据库中读取。第一个   消息发送到IndirectList,内容从中获取   恢复数据库和正常的Collection / List / Vector行为。

如果我们查看IndirectList sources,我们会看到,所有工作都委托给它的原始集合,就像API所说的那样。

的答案

  

JPA(在这种情况下是Eclipselink)是否总是返回IndirectList,其中Entity有一个List?

是的,它总是返回包含IndirectList的指定集合。由于它将所有内部工作委托给包装集合,因此它保留了它的工作方式。

  

该列表是否正确或它应该转换为另一个列表(也许   链表)?

是的,可以使用IndirectList。你没有转换,只需定义你想要的任何类型的集合,不要担心IndirectList,因为它是透明管理的。

答案 1 :(得分:2)

由于List是一个接口,JPA提供者可以自由地返回任何实现。 EclipseLink重新运行使用IndirectList的{​​{1}}。这很好,因为ListIndirectList

对于记录或将来的参考,通常最好使用JPA接口。