17 java orm hibernate jpa lazy-loading
我在Spring中使用JPA(Hibernate).当我想延迟加载Stirng属性时,我使用以下语法:
@Lob
@Basic(fetch = FetchType.LAZY)
public String getHtmlSummary() {
return htmlSummary;
}
Run Code Online (Sandbox Code Playgroud)
但是当我看到hibernate创建的sql时,似乎这个属性不是延迟加载的?我也在ANT脚本中使用这个类org.hibernate.tool.instrument.javassist.InstrumentTask来检测这个属性,但似乎它不起作用.
请帮我.
在Khosro.
首先,你应该知道JPA规范明确规定LAZY只是对JPA提供者的一个提示,所以它不是强制性要求。
要使基本类型延迟获取工作,您需要启用字节码增强并将enableLazyInitialization配置属性显式设置为true:
<plugin>
<groupId>org.hibernate.orm.tooling</groupId>
<artifactId>hibernate-enhance-maven-plugin</artifactId>
<version>${hibernate.version}</version>
<executions>
<execution>
<configuration>
<enableLazyInitialization>true</enableLazyInitialization>
</configuration>
<goals>
<goal>enhance</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
延迟Lob加载需要字节码检测才能正常工作,因此默认情况下它在我所知道的任何JPA实现中都不可用.
你最好的选择是将Lob放入一个单独的实体中HtmlSummary,并使用一个懒惰加载的一对一关联.
| 归档时间: |
|
| 查看次数: |
24190 次 |
| 最近记录: |