将休眠检测移动到构建时

2022-09-03 01:59:17

我有一个大约3000个实体的应用程序(我知道它很多,但我无法更改它)。当应用程序加载时,休眠需要一分钟才能完成所有检测和SsionFactory设置工作。
我想知道我是否可以配置Hibernate以在构建时对原始类进行检测。
通过这种方式,我可以避免3000个额外的生成代理类和应用程序启动的巨大开销。
我已经找到了一些关于Hibernate构建时检测()的信息,但不清楚这是完全取代了运行时检测还是只处理Hibernate惰性属性获取机制。
有关如何将代理生成移动到构建时间的任何信息将不胜感激。org.hibernate.tool.instrument.javassist.InstrumentTask


答案 1

是的,可以。休眠代码中有一个 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的。


答案 2

从Hibernate 4.2.8开始,您可以使用Hibernate-enhance-maven-plugin:

<build>
    <plugins>
        <plugin>
            <groupId>org.hibernate.orm.tooling</groupId>
            <artifactId>hibernate-enhance-maven-plugin</artifactId>
            <executions>
                <execution>
                    <phase>process-test-resources</phase>
                    <goals>
                        <goal>enhance</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

推荐