今天小编给大家分享一下SpringBoot中怎么使用JPA作为数据持久化框架的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
1、引入依赖
<!-- spring mvc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- mysql 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- jpa持久层 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
2、数据库连接配置
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/jpa-demo?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&useSSL=true&characterEncoding=UTF-8
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123456
jpa:
hibernate:
# 自动创建表
ddl-auto: update
ddl-auto 一共有五个可选值
none: 什么也不做
create:每次加载 hibernate 时都会删除上一次的生成的表,然后根据你的 model 类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
create-drop:每次加载 hibernate 时根据 model 类生成表,但是 sessionFactory 一关闭,表就自动删除。
update:最常用的属性,第一次加载 hibernate 时根据 model 类会自动建立起表的结构(前提是先建立好数据库),以后加载 hibernate 时根据 model 类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等应用第一次运行起来后才会。
validate:每次加载 hibernate 时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。
3、数据对象(DO)
import lombok.Data;
import javax.persistence.*;
@Table(name = "sys_user")
@Entity
@Data
public class SysUserDO {
/**
* 主键-自增
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(columnDefinition = "varchar(12) comment '用户名称'")
private String name;
@Column(columnDefinition = "varchar(50) comment '邮箱'")
private String email;
}
@Id,表示该属性为主键字段
@GeneratedValue(strategy = GenerationType.IDENTITY),使用主键自增的方式
@Column,指定数据库字段的属性,可以设置数据类型,长度、注释等信息,也可以只写一个注解,jpa会自动识别
4、持久化对象
import com.biz.jpa.entity.SysUserDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface SysUserRepository extends JpaRepository<SysUserDO, Long> {
}
@Repository,表示这是数据访问层
5、业务层
import com.biz.jpa.dao.SysUserRepository;
import com.biz.jpa.entity.SysUserDO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class SysUserService {
@Autowired
private SysUserRepository sysUserRepository;
public SysUserDO saveUser() {
SysUserDO sysUser = new SysUserDO();
sysUser.setName("Asurplus");
sysUser.setEmail("123456@qq.com");
sysUserRepository.save(sysUser);
return sysUser;
}
}
我们向 sys_user 表中插入一条数据,由于主键自增,我们无需设置主键,插入成功后,自增的主键会自动回写到对象中
6、测试
import com.biz.jpa.entity.SysUserDO;
import com.biz.jpa.service.SysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class SysUserController {
@Autowired
private SysUserService sysUserService;
@GetMapping("save")
public SysUserDO save() {
return sysUserService.saveUser();
}
}
访问:
http://localhost:8080/save
返回:
{"id":1,"name":"Asurplus","email":"123456@qq.com"}
插入成功,并返回了自增的主键,Jpa 的集成到这里就完成了,更多 Jpa 的用法需要在实际的项目开发中去探索。
以上就是SpringBoot中怎么使用JPA作为数据持久化框架的详细内容,更多关于SpringBoot中怎么使用JPA作为数据持久化框架的资料请关注九品源码其它相关文章!