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: 8080spring: 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@datapublic 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;@repositorypublic 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;@servicepublic 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;@restcontrollerpublic 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作为数据持久化框架的详细内容。