spring-boot-starter-data-jpa 生成表
时间: 2023-10-09 21:07:47 浏览: 51
在使用 Spring Boot Data JPA 模块时,我们可以通过配置实体类和数据源来自动生成表。具体步骤如下:
1. 添加 Spring Boot Data JPA 依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
```
2. 配置数据源和 JPA 属性,例如在 application.yml 文件中:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: update
show-sql: true
```
其中,`ddl-auto` 属性用于定义 Hibernate 在启动时对数据库的操作,它有以下几个可选值:
- `create`:每次启动时都重新创建表,这将删除所有的数据表并重新创建它们。这是一个非常危险的操作,因为它会永久删除所有的数据。
- `create-drop`:每次启动应用程序时都会创建并删除表。这是一个非常危险的操作,因为它会永久删除所有的数据。
- `update`:Hibernate 将会根据实体类的定义自动更新表。如果表不存在,则 Hibernate 会创建该表。如果表已经存在,则 Hibernate 会根据实体类的定义更新表结构,但是不会删除任何数据。
- `validate`:Hibernate 比较实体类和数据库表结构,如果不匹配,则会抛出异常,应用程序将不会启动。
- `none`:Hibernate 不会对数据库进行任何操作。
3. 定义实体类,例如:
```java
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String name;
@Column(nullable = false)
private Integer age;
// 省略 getter 和 setter 方法
}
```
其中,`@Entity` 注解用于将 User 类标记为 JPA 实体,`@Table` 注解用于指定数据库表的名称。`@Id` 和 `@GeneratedValue` 注解用于定义主键和自动生成主键的策略。
4. 运行应用程序,Hibernate 将会自动根据实体类定义生成对应的数据表。如果 `ddl-auto` 属性值为 `update`,则 Hibernate 会根据实体类定义更新表结构。如果表不存在,则 Hibernate 会创建该表。如果表已经存在,则 Hibernate 会根据实体类的定义更新表结构,但不会删除任何数据。