当前位置: 首页 > news >正文

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

 

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

 

image

 

<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>

  

 

 

好,那你**不用 MyBatisX**,我直接给你一套 **JPA(Hibernate)场景下,IDEA 必备插件 + 配置 + OpenRewrite 专属 JPA 迁移规则**,完全贴合你:
> 原栈: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 Boot3. 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`:```yamlspring:jpa:hibernate:ddl-auto: validateproperties:hibernate:dialect: org.hibernate.dialect.MySQLDialectshow-sql: true```
3. **事务**- `@Transactional` 已经从 `javax.transaction` 自动换到 `jakarta.transaction`- 检查 `@EnableTransactionManagement` 配置---# 五、最简一句话总结
- 插件:**OpenRewrite + Maven Helper + Lombok + JPA Buddy**
- 规则:上面这套**JPA 专属 OpenRewrite 配置**
- 路径:Spring5 → Boot2.7 → Boot3 → Boot4 + Hibernate7 + JDK21需要我给你一份 **迁移后 JPA 常见报错(Hibernate7 + Boot4)快速排查清单** 吗?

  

http://www.jsqmd.com/news/809294/

相关文章:

  • 别再让 AI 单兵作战了:Claude Code + Codex CLI 组成“AI 开发小队“
  • 2026年树脂混凝土泵站生产厂家权威推荐榜单:树脂混凝土一体化泵站/树脂混凝土沉井泵站/树脂混凝土预制泵站源头厂家精选 - 泵站报价15613348888
  • APK Installer:Windows上安装Android应用的终极指南,简单三步轻松搞定
  • 3步生成专业级代码质量报告:Sonar CNES Report完全指南
  • 告别Bug!用clang-tidy给你的C++代码做个深度体检(附常用检查项配置清单)
  • AI写专著必备攻略:借助AI专著写作工具,3天搞定20万字专著
  • 终极指南:PX4无人机电池健康监测与电量估算算法优化实践
  • STM32F407驱动24C系列EEPROM,一个通用程序搞定从24C01到24C512(附完整KEIL工程)
  • Hive分桶机制应用
  • 收藏必备!小白程序员必看:Agent如何越用越聪明?Hermes技能进化全解析
  • 太赫兹视频SAR极坐标实时成像系统【附代码】
  • 从高德转战Leaflet:一个Vue项目的地图框架迁移实战与避坑指南
  • 北京海斯居科技:昌平正规的空气净化公司 - LYL仔仔
  • 终极指南:如何在Windows上轻松安装APK文件?告别笨重模拟器
  • 在Taotoken模型广场中根据任务需求挑选合适的大模型
  • AI助手如何通过MCP协议自动化操作飞书:feishu-inout工具实战指南
  • 中亚物流通道哪家稳定? - 中媒介
  • 3步免费实现Windows AirPlay 2接收器:打破苹果生态壁垒的终极指南
  • CTFshow密码学入门实战:从凯撒到RSA,手把手带你通关crypto0-13
  • 【23年算法】DBO-DNN多变量回归预测 基于蜣螂算法-深度神经网络多回归时序预测附Matlab代码
  • 众智商学院在行业内排名如何? - 众智商学院官方
  • 从手算到电路:深入剖析计算机中定点数与浮点数的运算实现【硬核解析】
  • 别急着格式化!DiskGenius恢复U盘/移动硬盘RAW格式数据的完整流程
  • 别光会打印星星了!用字符菱形为例,带你玩转C++的控制台‘像素画’
  • YOLOv7 Backbone源码逐层拆解:从CBS到ELAN的工程实现
  • ICC II 物理实现:从 Floorplan 到 Setup 的实战规划
  • 别再被Linux的free命令骗了!手把手教你读懂‘可用内存’和‘实际空闲内存’的区别
  • 承重强不易晃动的猫爬架推荐哪家 - 中媒介
  • 观澜墅二手房价格区间解析:住宅与别墅市场现状 - 品牌2026
  • 细节补充第一篇:RocketMQ 的使用