gpt4 book ai didi

hibernate - SpringBoot hibernate gradle字节码增强

转载 作者:行者123 更新时间:2023-12-02 19:06:34 29 4
gpt4 key购买 nike

我正在尝试使 hibernate 的一对一关系懒惰地工作。

我的设置是使用 hibernate 和 Gradle 的 spring-data-jpa。

即使这是一个有详细记录的问题/功能,并且有很多好的读物,我已经意识到其中大多数都在处理 Maven。

幸运的是,有一个 Gradle 插件可以用于这个特殊原因,即使 documentation不是最好的,我找到了this post这也解决了同样的问题,这似乎是一个非常简单的解决方案。

在我的 Gradle 脚本中实现所需的更改后,似乎 hibernate 仍然急切地加载 OneToOne 关系,因此我尝试执行

./gradlew build

并注意到打印了以下消息:

Skipping Hibernate bytecode enhancement since no feature is enabled

根据source code of the plugin ,当未启用增强功能时会显示此消息,但我使用的情况并非如此:

hibernate {
enhance {
enableLazyInitialization= true
enableDirtyTracking = true
enableAssociationManagement = true
enableExtendedEnhancement = true
}}

所以我的问题是有人让它正常工作吗?如果是的话,您能给我指出一些教程/指南来实现它吗?我在集成测试中使用拦截器来验证 hibernate 正在使用的查询数量以及监视 sql 日志。

我的 gradle 文件如下所示:

buildscript {
repositories { mavenCentral() }
dependencies {
classpath 'com.github.ben-manes:gradle-versions-plugin:+'
}
dependencies {
classpath "org.hibernate:hibernate-gradle-plugin:5.2.15.Final"
}
}

plugins {
id "io.spring.dependency-management" version "1.0.3.RELEASE"
}

ext { springBootVersion = '1.5.4.RELEASE' }
ext['flyway.version'] = '4.0.3'

apply plugin: 'java'
apply plugin: 'checkstyle'
apply plugin: 'findbugs'
apply plugin: 'com.github.ben-manes.versions'
apply plugin: 'org.hibernate.orm'


hibernate.enhance {
enableLazyInitialization = true
enableDirtyTracking = true
enableAssociationManagement = true
enableExtendedEnhancement = true
}

jar {
baseName = 'domain'
version = '0.0.1-SNAPSHOT'
}
sourceCompatibility = 1.8

repositories { mavenCentral() }


configurations.all {
exclude module: 'logback-classic'
}

dependencies {
compile group: 'org.hibernate', name: 'hibernate-core', version: '5.2.15.Final'
compile group: 'org.springframework', name: 'spring-jdbc', version: '4.3.9.RELEASE'
compile('org.springframework.boot:spring-boot-starter')
compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa'
compile group: 'com.zaxxer', name: 'HikariCP', version: '2.6.3'
compile group: 'org.flywaydb', name: 'flyway-core', version: '4.0.3'
compile group: 'org.postgresql', name: 'postgresql', version: '42.1.1'
compile 'com.github.ulisesbocchio:jasypt-spring-boot-starter:1.12'
compile group: 'org.hibernate', name: 'hibernate-validator', version: '5.2.4.Final'
compileOnly 'org.projectlombok:lombok:1.16.20'
testCompile('org.springframework.boot:spring-boot-starter-test')
testCompile 'org.hsqldb:hsqldb:2.3.3'
testCompile group: 'org.glassfish.web', name: 'el-impl', version: '2.2.1-b05'
compileOnly 'com.google.code.findbugs:annotations:3.0.1'
}

dependencyManagement {
imports { mavenBom("org.springframework.boot:spring-boot-
dependencies:${springBootVersion}") }
}

checkstyle {
configFile = file("../checks.xml")
toolVersion = '7.5.1'
}

tasks.withType(FindBugs) {
ignoreFailures true
effort 'min'
reportLevel 'high' // low, medium, high
reports {
xml {
enabled true
}
html.enabled false
}
}

sourceSets {
integrationTest {
java {
compileClasspath += main.output + test.output
runtimeClasspath += main.output + test.output
srcDir file('src/integration_test/java')
}
resources.srcDir file('src/integration_test/resources')
}
}

task integrationTest(type: Test) {
testClassesDir = sourceSets.integrationTest.output.classesDir
classpath = sourceSets.integrationTest.runtimeClasspath
outputs.upToDateWhen { false }
}

configurations {
integrationTestCompile.extendsFrom testCompile
integrationTestRuntime.extendsFrom testRuntime
}

最佳答案

根据sources如果您正确创建了 build.gradle 文件,它应该可以工作。最新docs它说如下。

ext {
hibernateVersion = 'hibernate-version-you-want'
}

buildscript {
dependencies {
classpath "org.hibernate:hibernate-gradle-plugin:$hibernateVersion"
}
}

hibernate {
enhance {
// any configuration goes here
}
}

确保您已在 buildscript 部分中添加了该插件,如果您可以发布您的 build.gradle 它可能会更有用也是如此。

在旁注中看看这个 question另外,为了解决您原来的一对一延迟初始化问题。

关于hibernate - SpringBoot hibernate gradle字节码增强,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49031046/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com