美文网首页
SpringBoot(12) — JPA 的使用

SpringBoot(12) — JPA 的使用

作者: 奔跑的佩恩 | 来源:发表于2021-07-26 16:55 被阅读0次

前言

在上节中我们已经讲述了JDBCTemplateSpringBoot中的应用。大家有兴趣的话可参考
SpringBoot(11) — JDBCTemplate的使用
经过这段时间的学习,我们可以知道JDBCTemplate实质是一个将数据表映射成实体类的"框架",其操作主要还是偏向sql语句,需要开发者有比较强的sql语句知识。而今天要介绍的JPA,也是一个将数据表映射成实体类的"框架"。下面就来详细介绍下它吧。

今天涉及到的知识:

  1. 什么是JPA
  2. JPA注解基础
  3. JPASpringBoot中的使用
    3.1 添加依赖
    3.2 添加配置文件
    3.3 建立数据表映射的实体类
    3.4 dao面向数据库逻辑层
    3.5 service面向业务逻辑层
    3.6 controller控制层
  4. 项目结构与效果图

测试结果如下:

======我是测试啊=====
======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中很强的一个。从功能上看JPAHibernate功能的一个子集。

二. 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的一些常用注解,现在让我们看看JPASpringBoot中的使用。

3.1 添加依赖

首先作为Springboot项目,先添加几个基本依赖。在pom.xml中添加如下依赖:

相关文章

网友评论

      本文标题:SpringBoot(12) — JPA 的使用

      本文链接:https://www.haomeiwen.com/subject/rxhpmltx.html