Hibernate嵌入式对象可以延迟加载吗?

时间:2011-11-22 00:21:34

标签: hibernate lazy-loading

我有一个Hibernate实体,它有几个非常胖但很少使用的嵌入式对象。我想使嵌入式对象延迟加载,但理想情况下我不希望将信息移动到单独的表中。

是否可以,如何对嵌入对象进行注释以便延迟加载?

2 个答案:

答案 0 :(得分:3)

正如我从你的问题中理解的那样,你有一个大的对象(或表),你不想填充所有的属性。 您可以按照here使用HQL或条件查询的投影功能。

以下是一个示例, HQL 应为

select new com.foo.Bean(b.prop1,b.prop2,...) from Bean b

您还需要在Bean类中添加相应的构造函数。

让我补充一点:

    hibernate中的
  1. lazy在必须从多个表中获取数据时具有意义。在这里,您保存要触发的其他查询以从其他表中获取数据。详细了解lazy设置here。它可能不适用于您的情况,因为您只需从一个表中获取数据。

  2. 我觉得让多个对象在同一个表中表示数据并不是一个好主意,只是因为很少使用少数几列中的数据。

答案 1 :(得分:3)

直接你不能通过设置对象中的属性是,你可以

@Basic(fetch=FetchType.LAZY)

你也应该阅读 http://docs.jboss.org/hibernate/core/3.3/reference/en/html/performance.html#performance-fetching-lazyproperties