相关疑难解决方法(0)

Hibernate XML Mapping:Lazy False还是Fetch Select?

我有一个简单的问题.我在项目中发现了这个Hibernate配置:

<many-to-one name="employee" 
    class="com.myapp.Employee"
    cascade="merge"
    lazy="false"
    fetch="select">
<column name="employee_id"
     sql-type="bigint" 
     not-null="true"/>
</many-to-one>
Run Code Online (Sandbox Code Playgroud)

fetch ="select"意味着"延迟加载所有集合和实体"基于提取策略.但是通过写lazy ="false"意味着不要延迟加载.所以上面的配置说:"禁用延迟加载.启用延迟加载." 实际上,这意味着属性是延迟加载的?

所以我可以将配置缩短为:

<many-to-one name="employee" 
    class="com.myapp.Employee"
    cascade="merge"
    fetch="select">
<column name="employee_id"
     sql-type="bigint" 
     not-null="true"/>
</many-to-one>
Run Code Online (Sandbox Code Playgroud)

但是fetch ="select"是不是默认模式?所以实际上,我可以声明相同的配置:

<many-to-one name="employee" 
    class="com.myapp.Employee"
    cascade="merge">
<column name="employee_id"
     sql-type="bigint" 
     not-null="true"/>
</many-to-one>
Run Code Online (Sandbox Code Playgroud)

我对么?错误?想法?谢谢

如果我想启用延迟加载,我必须添加lazy ="true"并删除lazy ="false"

mapping hibernate lazy-loading

21
推荐指数
1
解决办法
6万
查看次数

Hibernate映射设置lazy ='false'

在hibernate映射中,我设置了属性lazy="false",这将获取父级的所有子记录.

这在整个应用程序中使用.
这会在我的应用程序的特定模块中产生性能问题,其中我只想获取父记录.

我不能更改lazy属性,true因为它在许多其他地方使用.有没有办法来解决这个问题?

如果需要更多信息,请告诉我.

mapping hibernate lazy-evaluation fetch

4
推荐指数
1
解决办法
2万
查看次数