前言
在上节中我们已经讲述了JDBCTemplate在SpringBoot中的应用。大家有兴趣的话可参考
SpringBoot(11) — JDBCTemplate的使用
经过这段时间的学习,我们可以知道JDBCTemplate实质是一个将数据表映射成实体类的"框架",其操作主要还是偏向sql语句,需要开发者有比较强的sql语句知识。而今天要介绍的JPA,也是一个将数据表映射成实体类的"框架"。下面就来详细介绍下它吧。
今天涉及到的知识:
- 什么是
JPA -
JPA注解基础 -
JPA在SpringBoot中的使用
3.1 添加依赖
3.2 添加配置文件
3.3 建立数据表映射的实体类
3.4 dao面向数据库逻辑层
3.5 service面向业务逻辑层
3.6 controller控制层 - 项目结构与效果图
测试结果如下:
======我是测试啊=====
======bean= Student(id=2, name=小明, age=18)
======bean= Student(id=3, name=小华, age=20)
======student= Student(id=2, name=小明, age=18)
一. 什么是 JPA
JPA全称Java Persistence API.JPA。通过jdk 5.0注解或xml方式实现数据表到实体类的映射。JPA是一套规范,它需要Provider来实现其功能。因此我们不难发现使用JPA的一个好处:我们可以更换实现而不必改动太多代码。Hibernate就是JPA Provider中很强的一个。从功能上看JPA是Hibernate功能的一个子集。
二. JPA 注解基础
JPA一些常用注解有:
- @Table:注解在与数据表有映射关系的实体类头部,表示此实体类为数据表的映射。
Table注解常用的属性有name,用于指定数据库的表名,如:
@Table(name="demo") // 标记数据表表名为 demo
public class Student {
}
以上表示实体类Student是数据表demo的映射。
- @Entity: 注解到
java bean的类头部,表示该bean是一个数据表映射的类,如:
@Entity //说明这是一个JPA实体
@Table(name="demo") // 标记数据表表名为 demo
public class Student {
}
一般@Entity与@Table会一起使用。
- @Transient:忽略该属性。一般此注解添加到属性头部,表示该属性不映射到数据表
- @Temporal:注解在属性头部,用于给改属性调节精度
- @Column:该注解添加在属性头部,表示该属性是数据表中的某个列,如:
@Entity //说明这是一个JPA实体
@Table(name="demo") // 标记数据表表名为 demo
public class Student {
@Column(name = "frame") //数据表中字段名
private String name;
}
上面的@Column(name = "name")表示Student类中的name属性对应数据表demo中的frame列。frame为列名。
- @Id:映射主键,被此注解的属性表示该属性对应数据表的主键
- @GeneratedValue:注解在主键属性头部,表示该主键生成策略,一般默认自增。如:
@Entity //说明这是一个JPA实体
@Table(name="demo") // 标记数据表表名为 demo
public class Student {
@Id //主键
@GeneratedValue(strategy = GenerationType.AUTO) //自增
@Column(name = "id") //数据表中字段名
private int id;
}
三. JPA 在 SpringBoot 中的使用
了解了JPA的一些常用注解,现在让我们看看JPA在SpringBoot中的使用。
3.1 添加依赖
首先作为Springboot项目,先添加几个基本依赖。在pom.xml中添加如下依赖:










网友评论