如何准确判断Spring Boot应用是否默认使用Hibernate作为ORM框架
判定Spring Boot应用是否默认使用Hibernate作为ORM框架的可操作方法
Lombok仅在编译期生成模板代码,完全不参与ORM框架选型,判定时不需要考虑Lombok的影响,直接按下面三个方法验证即可:
- 依赖树排查
构建工具执行依赖查询命令:Maven项目用mvn dependency:tree,Gradle项目用./gradlew dependencies,在输出结果中检索hibernate-core依赖。
Spring Boot官方提供的spring-boot-starter-data-jpa组件默认绑定Hibernate作为JPA实现,只要你没有在starter依赖中手动排除Hibernate、也没有额外引入EclipseLink/OpenJPA等其他JPA实现,框架就会默认启用Hibernate。如果做过如下排除配置,就不会默认加载Hibernate:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <exclusions> <exclusion> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> </exclusion> </exclusions> </dependency> - 启动日志校验
保持应用日志级别为INFO及以上,启动过程中检索日志内容,Hibernate启动时会打印专属前缀HHH开头的日志,典型日志如下:HHH000412: Hibernate ORM core version 6.2.7.Final
能搜到这类日志就说明Hibernate已经完成初始化,是当前生效的ORM实现。 - 运行时Bean校验
启动应用后从Spring容器中取出EntityManagerFactory实例,打印它的实际实现类名,示例代码:
如果输出类名包含@SpringBootApplication public class App implements CommandLineRunner { @Autowired private EntityManagerFactory entityManagerFactory; public static void main(String[] args) { SpringApplication.run(App.class, args); } @Override public void run(String... args) { System.out.println("当前生效的JPA实现类:" + entityManagerFactory.getClass().getName()); } }org.hibernate.internal.SessionFactoryImpl,即可确认当前使用Hibernate作为ORM框架。
内容的提问来源于stack exchange,提问作者AOUADI Slim
相关产品推荐
相关产品推荐

