我有一个包含大约 3000 个实体的应用程序(我知道很多,但我无法更改)。
当应用程序加载时,Hibernate 需要几分钟时间来完成所有检测和 SessionFactory 设置工作。
我想知道我是否可以配置 Hibernate 在构建期间对原始类进行检测。
这样我就可以避免 3000 个额外生成的代理类和应用程序启动的巨大开销。
我找到了一些关于 Hibernate 构建时检测 (org.hibernate.tool.instrument.javassist.InstrumentTask
) 的信息,但尚不清楚这是否完全取代了运行时检测或仅处理Hibernate 惰性属性获取机制。
任何有关如何将代理生成移动到构建时间的信息都将不胜感激。
最佳答案
是的,你可以。 Hibernate 代码中有一个 Ant 任务:org.hibernate.tool.instrument.javassist.InstrumentTask
。
<target name="instrument" depends="compile">
<taskdef name="instrument" classname="org.hibernate.tool.instrument.javassist.InstrumentTask">
<classpath refid="<some-ant-path-including-hibernate-core-jar>"/>
<classpath path="<your-classes-path>"/>
</taskdef>
<instrument verbose="true">
<fileset dir="<your-classes>">
<include name="*.class"/>
</fileset>
</instrument>
</target>
我也见过一些基于 Maven 的。
关于java - 将 Hibernate 工具移动到构建时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12747527/