我刚开始学习Spring,有一些东西不太清楚。 我的 pom 是这样完成的:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
当我启动应用程序时,抛出以下错误:
应用程序无法启动
描述:
配置数据源失败:未指定“url”属性,无法配置嵌入数据源。
原因:未能确定合适的驱动程序类别
行动:
考虑以下因素: 如果您想要嵌入式数据库(H2、HSQL 或 Derby),请将其放在类路径中。 如果您有要从特定配置文件加载的数据库设置,您可能需要激活它(当前没有活动配置文件)。
如果我添加此依赖项:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
然后应用程序就可以运行了
我想了解 Jpa 是否需要 h2 才能工作,因为在许多示例中我看到通常不会添加此依赖项来使应用程序工作。
我检查了项目属性 --> Java 构建路径 --> 源(选项卡)--> 构建路径上的源文件夹 我注意到,在项目属性 --> Java 构建路径 --> 源(选项卡) --> 构建路径上的源文件夹中,在 src/main/resources 中,排除的项目标记为 **。 我删除了它,现在一切正常。
如果您使用 Spring starter 并且没有在 pom.xml 中指定任何特定数据库,那么 Spring Data 将为您配置默认的 H2(内存中)数据库。您不需要将 h2 工件放入 pom.xml 中。
但是在您的 pom.xml 中已经添加了 MySql 工件。在这种情况下,您必须告诉 Spring JPA 应该使用哪个数据库。例如,通过在 application.properties 中添加数据源详细信息。
如果您决定使用 MySQL,那么 pom.xml 中的工件将是:
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
application.properties 中的数据源定义为:
spring.datasource.url=jdbc:mysql://localhost:3306/<some_db_name>
spring.datasource.username=<some_username>
spring.datasource.password=<some_password>
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
要让 Spring Data 在启动期间从实体类创建/更新数据库,请使用以下属性:
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update
如果您想从 DDL 脚本创建数据库并从脚本文件插入一些数据 - 请使用以下属性:
spring.jpa.hibernate.ddl-auto=none
spring.sql.init.mode=always
Spring 将使用位于类路径(默认)上的默认脚本 schema.sql 和 data.sql。更详细的 Spring 文档:https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto.data-initialization.using-basic-sql-scripts