如何在 Intellij IDEA 运行之前启用 Hibernate 字节码检测?

Yud*_*rya 5 java hibernate intellij-idea

在 gradle 中你可以使用以下方法来实现:

apply plugin: 'enhance'
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'org.hibernate:hibernate-gradle-plugin:VERSION'
    }
}
dependencies {
    compile group: 'org.hibernate.javax.persistence', name: 'hibernate-jpa-[SPEC-VERSION]-api', version: '[IMPL-VERSION]'
    compile group: 'org.hibernate', name: 'hibernate-gradle-plugin', version: 'VERSION'
}
Run Code Online (Sandbox Code Playgroud)

如果我不想通过 Gradle 运行项目,而是想直接通过 Intellij (shift-F10) 运行我的主类,该怎么办?是否也可以在应用程序运行之前执行构建时字节码检测?我应该如何实现这个目标?

Jen*_*der 0

Hibernate 在运行时执行“字节码检测”,因此您无需执行任何特殊操作即可实现它。

实际上,它不是字节码检测(这意味着更改现有类),而是代理(这意味着现有类由动态生成的类使用)。

  • “字节码检测”和“通过反射运行时创建代理”是两个完全不同的东西,人们应该研究资源来理解差异。字节码增强提供了许多性能增强功能(有些人会说强制性能功能)。代理实际上只提供关系的延迟加载,并且它通过许多警告来实现这一点,这些警告解释了 Hibernate 文档中的大量“警告”部分。自 2006 年以来,像 DataNucleus 这样的 JDO/JPA 实现就受益于字节码增强,但在 Hibernate 圈子中使用较少。 (3认同)