升级JDK8 spring5的项目至 boot4+jdk26过程记录(一)

 

整体方案:在IDEA中用OpenRewrite实现迁移工作

 

image

 

 

原栈:Spring 5 + JPA(Hibernate) + JDK8 + 纯XML/JavaConfig
目标:Spring Boot4 + Spring Framework7 + Jakarta Persistence + JDK21/26

 

一、IDEA 必装插件(JPA 专属精简版)

✅ 核心必装(4 个,缺一不可)

1. OpenRewrite(最关键,迁移主力)

- 作用:自动做三件大事1.  javax.persistence.*  →  jakarta.persistence.*  全局替换(JPA 最痛的点)
2. 原生 Spring 5 转 Spring Boot
3. Boot2→3→4、Hibernate 5→6→7 自动升级
- IDE 里可以可视化预览、回滚、局部执行,比命令行更安全

2. Jakarta EE Integration(内置,启用即可)

- 识别  jakarta.persistence 、 jakarta.transaction 、 jakarta.validation 
- 解决导入爆红、注解不识别、JPA 实体提示丢失

3. Maven Helper(必装)

- 快速排查:Hibernate、JPA、Spring、JDBC 依赖冲突
- 迁移时 Hibernate 版本最容易炸包冲突

4. Lombok(如果实体用了 @Data/@NoArgsConstructor)

- 必须开注解处理,否则 JPA 实体编译报错

 

✅ 推荐辅助(2 个,大幅减少踩坑)

5. SonarLint

- 实时标红:废弃 JPA API、旧注解、 javax  残留、空安全问题
- Boot4 + Hibernate7 对空值、级联、校验更严格

6. JPA Buddy(强烈推荐,JPA 神器)

- 自动校验实体映射、外键、索引、@OneToMany/@ManyToOne
- 生成 Repository、DTO、Query、分页
- 一键兼容 Jakarta 包,迁移后快速定位映射异常

 

二、OpenRewrite 给你加 JPA 专属迁移规则(直接替换之前的配置)

你之前的  rewrite-maven-plugin ,activeRecipes 改成下面这套,专门适配 JPA+Hibernate:

xml

<activeRecipes>
<!-- 1. 原生 Spring5 → Spring Boot2.7(过渡,javax 体系) -->
<recipe>org.openrewrite.java.spring.boot2.SpringBoot2FromSpringFramework</recipe>
<recipe>org.openrewrite.java.spring.boot2.UpgradeSpringBoot_2_7</recipe>

<!-- 2. JPA 专属:javax.persistence → jakarta.persistence 全局替换(重中之重) -->
<recipe>org.openrewrite.java.migrate.jakarta.JavaxPersistenceToJakartaPersistence</recipe>
<recipe>org.openrewrite.java.migrate.jakarta.JavaxValidationToJakartaValidation</recipe>
<recipe>org.openrewrite.java.migrate.jakarta.JavaxTransactionToJakartaTransaction</recipe>

<!-- 3. Spring Boot2 →3:Hibernate5→6,JPA 配置迁移 -->
<recipe>org.openrewrite.java.spring.boot3.UpgradeSpringBoot_3_4</recipe>
<recipe>org.openrewrite.java.hibernate.UpgradeHibernate_6_x</recipe>

<!-- 4. Spring Boot3→4:Hibernate6→7、Spring Framework7 -->
<recipe>org.openrewrite.java.spring.boot4.UpgradeSpringBoot_4_0</recipe>
<recipe>org.openrewrite.java.hibernate.UpgradeHibernate_7_x</recipe>

<!-- 5. JDK 升级到 21,后续再切 26 -->
<recipe>org.openrewrite.java.migrate.UpgradeToJava17</recipe>
<recipe>org.openrewrite.java.migrate.UpgradeToJava21</recipe>

<!-- 6. 清理废弃配置、过时属性 -->
<recipe>org.openrewrite.java.spring.boot3.RemoveDeprecatedSpringBoot2Properties</recipe>
</activeRecipes>
 

重点说明:

- 专门加了  JavaxPersistenceToJakartaPersistence ,只动 JPA 相关包,不乱改其他代码
- 自动升级 Hibernate 5 →6 →7,适配 Boot4
- 自动把  hibernate.*  配置改成 Boot4 新的  spring.jpa.*  属性

 

三、IDEA 关键配置(JPA 迁移必开)

1. Project SDK & Language Level- SDK:JDK21
- Language level:21(后续改 26 即可)
2. 开启 Jakarta 支持
 Settings → Build, Execution, Deployment → Compilers → Java Compiler 
确保使用对应 JDK,且启用 Jakarta EE 支持
3. Lombok 注解处理
 Settings → Build → Compiler → Annotation Processors → Enable annotation processing 

 

四、JPA 迁移后你只需要手动检查 3 件事(OpenRewrite 做不到的)

1. 实体注解- 确认所有  @Entity 、 @Id 、 @Column 、 @OneToMany  都已经是  jakarta.persistence 
2. persistence.xml / 旧 JPA 配置- Boot4 不再推荐  persistence.xml ,全部迁移到  application.yml :yaml

spring:
jpa:
hibernate:
ddl-auto: validate
properties:
hibernate:
dialect: org.hibernate.dialect.MySQLDialect
show-sql: true
 
3. 事务-  @Transactional  已经从  javax.transaction  自动换到  jakarta.transaction 
- 检查  @EnableTransactionManagement  配置

 

五、最简一句话总结

- 插件:OpenRewrite + Maven Helper + Lombok + JPA Buddy
- 规则:上面这套JPA 专属 OpenRewrite 配置
- 路径:Spring5 → Boot2.7 → Boot3 → Boot4 + Hibernate7 + JDK21



 

  

posted @ 2026-05-13 14:28  nanahome  阅读(42)  评论(0)    收藏  举报