前言
在上节中我们已经讲述了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
中添加如下依赖:
网友评论