zl程序教程

您现在的位置是:首页 >  后端

当前栏目

spring boot项目中使用jpa的一个未解之谜

SpringBoot项目 一个 jpa 之谜 使用
2023-09-27 14:23:54 时间

公司最近主要的工作就是把之前的一个项目进行几乎全面的重构,之所以说几乎全面,是因为除开业务逻辑外全部换血:
框架由spring+struts2+mybatis改为spring boot+jpa
数据库由sybase+h2改为oracle+redis
子系统之间的交互由activemq改为http
代码具体实现全部重写

对一个运行了若干年的项目进行这样的大动作,路程无疑是漫长而复杂的。在进行了一系列设计文档的编写、评审、修订、再评审之后,终于可以开始码代码了。
本以为码代码终于可以松一口气,没想到在框架搭建阶段便遇到了一头拦路虎:
在进行jpa整合的时候,一切配置完成后,却无论如何不能启动项目,日志中打印了如下的异常信息

[ERROR] [2017-09-11 18:11:39.707] org.springframework.boot.diagnostics.LoggingFailureAnalysisReporter.report [LoggingFailureAnalysisReporter.java : 42] | 

***************************

APPLICATION FAILED TO START

***************************

Description:

Cannot determine embedded database driver class for database type NONE

Action:

If you want an embedded database please put a supported one on the classpath. If you have database settings to be loaded from a particular profile you may need to active it (the profiles "dev" are currently active).

看这个异常,就是数据库连不上,似乎是配置文件加载不了,但是实际上只要我去掉jpa的jar包,就可以正常运行。
于是网上一顿搜索,但是结果却不尽如人意,看了十几个答案,基本上都是一样的:

原因是:springboot启动时会自动注入数据源和配置jpa
解决:在@SpringBootApplication中排除其注入

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})

但是很明显,我就是要用数据库,这样一排除掉自然是启动不报错了,但是我却用不了了,于是我便求助了一下之前专门研究了一段时间jpa的同事。
他看了下我的项目后,说少了h2的jar包,于是在pom.xml中加入了h2的依赖

 dependency 

 groupId com.h2database /groupId 

 artifactId h2 /artifactId 

 version 1.3.175 /version 

 /dependency 

没想到加入这个jar之后再次运行项目,还真的是成功启动并连接上数据库了!
只不过,项目虽然成功启动,他却也说不出来为什么要这样改,之所以这样改了,只是因为一个偶然。
后来我也再次查看了项目框架中的代码,依旧没有找到哪里用到了h2,因此这个问题便暂时成为了未解之谜!
由于任务催的紧,一时之间也没有那么多时间深入去探究,只能做个记录,留待后边空闲点了继续刨根问底,也希望知道答案的朋友不吝赐教,感激不尽!


SpringBoot2.x系列教程29--SpringBoot整合JPA框架实现数据库CRUD操作 在上一章节中,壹哥 带大家在Spring Boot中整合了Mybatis框架,虽然Mybatis进行数据库操作已经很简单了,但是作为一个程序员,我们就得有追求极致的精神,就要想一下,还有没有第3种方式可以进行数据库操作呢? 其实是有的! 所以在这一章节中,我会继续带领大家学习在Spring Boot中整合JPA框架,利用JPA来实现数据库的操作。 一. JPA简介 1. JPA概念 JPA是Sun官方提出的Java持久化规范,是Java Persistence API的简称,中文名‘Java持久层API’,它本质上是一种ORM规范。 JPA通过 JDK 5.0 的 注解或XML 两
涂宗勋 认真生活,快乐工作,保持理想!https://blog.csdn.net/tuzongxun