(针对初学者)Spring Data JPA的基础知识

由于在学习Spring Boot的过程中,我有机会使用Spring Data JPA,所以我打算顺便复习一下并分享一下。

Spring Data JPA指的是什么?

Spring Boot是一种可以访问数据库的库/框架。

在Spring Data JPA中,内部实现了Hibernate(Hibernate)库,它可以将Java类和数据库表连接在一起。

让我们尝试使用Spring Data JPA自动生成数据库。

这次我们将尝试连接MySQL和Spring Data JPA,同时也可以当作练习。

在MySQL中进行数据库的配置。

创建数据库。

create database db_sample;

用户和密码的设置

create user 'username'@'localhost' IDENTIFIED BY 'password';

权限设置

GRANT ALL PRIVILEGES ON * . * TO 'username'@'localhost';

※ 补充说明:
GRANT语句用于为设置的用户设置访问权限。
两个星号分别指定了数据库和表。
由于本次使用了星号,因此允许对所有数据库和表的访问。

重新加载所设置的权限

FLUSH PRIVILEGES;

创建项目

从「Spring Starter 项目」开始创建新项目。

スクリーンショット 2022-04-16 10.33.32.png
スクリーンショット 2022-04-16 10.41.15.png
package com.example.demo.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

import lombok.Data;

@Data
@Entity
public class Sample {
	
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Integer id;
	
	private String name;

}

通过在Bean类上添加@Data注解,可以省略以下代码:
• getter方法
• setter方法
• 重写hashcode方法
• 重写toString方法
• 重写equals方法

@Entity是一个注解,表示一个数据容器。
添加此注解表示该类是一个实体类。

@Id是一个注解,用于指示Entity的主键。
给@Id加上注解后,将被假定为主表的主键列。

@GeneratedValue是一个注解,用于指定在主键列中自动生成和分配唯一值的方法。它适用于拥有@Id注解的实体类等。

战略

指定用于生成实体类主键值的属性。

IDENTITY的GenerationType。

使用数据库的identity列来生成主键值。

创建application.properties文件

创建一个application/properties文件,并在其中填写以下内容以进行数据库配置。

spring.jpa.hibernate.ddl-auto=create
spring.datasource.url=jdbc:mysql://localhost:3306/db_sample
spring.datasource.username=username
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

◆ 春季.jpa.hibernate.ddl-auto

在Spring Boot启动时自动生成表格。 可以通过以下设置进行配置。

如果entity表存在,则删除并重新生成。

如果存在entity表,则删除它并重新生成。此外,在Springboot结束时删除表。

更新:
若实体表不存在,则创建之。

◆数据库连接地址 spring.datasource.url

请提供连接的URL。

◆数据源的用户名

指定MySQL中设置的用户名。

◆数据库密码

指定你在MySQL中设置的密码

◆数据库驱动程序类名:spring.datasource.driver-class-name

在使用JDBC驱动程序时,需要指定驱动程序的类名。
在MySQL中,需要指定com.mysql.cj.jdbc.Driver。

スクリーンショット 2022-04-16 11.56.49.png

我成功地自动生成了!

文献引用

 

广告
将在 10 秒后关闭
bannerAds