一、JAP框架简介

JPA(Java Persistence API)意即Java持久化API,是Sun官方在JDK5.0后提出的Java持久化规范。主要是为了简化持久层开发以及整合ORM技术,结束Hibernate、TopLink、JDO等ORM框架各自为营的局面。JPA是在吸收现有ORM框架的基础上发展而来,易于使用,伸缩性强。

二、与SpringBoot2.0整合

1、核心依赖

<!-- JPA框架 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

2、配置文件

spring:application:name: node09-boot-jpadatasource:url: jdbc:mysql://localhost:3306/data_jpa?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=trueusername: rootpassword: rootdriver-class-name: com.mysql.jdbc.Driverjpa:hibernate:ddl-auto: updateshow-sql: true

ddl-auto几种配置说明
1)create
每次加载hibernate时都删除上一次的生成的表,然后根据bean类重新来生成新表,容易导致数据丢失,(建议首次创建时使用)。
2)create-drop
每次加载hibernate时根据bean类生成表,但是sessionFactory一关闭,表就自动删除。
3)update
第一次加载hibernate时根据bean类会自动建立起表的结构,以后加载hibernate时根据bean类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。
4)validate
每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

3、实体类对象

就是根据这个对象生成的表结构。

@Table(name = "t_user")
@Entity
public class User {@Id@GeneratedValueprivate Integer id;@Columnprivate String name;@Columnprivate Integer age;// 省略 GET SET
}

4、JPA框架的用法

定义对象的操作的接口,继承JpaRepository核心接口。

import com.boot.jpa.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepository extends JpaRepository<User,Integer> {// 但条件查询User findByAge(Integer age);// 多条件查询User findByNameAndAge(String name, Integer age);// 自定义查询@Query("from User u where u.name=:name")User findSql(@Param("name") String name);
}

5、封装一个服务层逻辑

import com.boot.jpa.entity.User;
import com.boot.jpa.repository.UserRepository;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class UserService {@Resourceprivate UserRepository userRepository ;// 保存public void addUser (User user){userRepository.save(user) ;}// 根据年龄查询public User findByAge (Integer age){return userRepository.findByAge(age) ;}// 多条件查询public User findByNameAndAge (String name, Integer age){return userRepository.findByNameAndAge(name,age) ;}// 自定义SQL查询public User findSql (String name){return userRepository.findSql(name) ;}// 根据ID修改public void update (User user){userRepository.save(user) ;}//根据id删除一条数据public void deleteStudentById(Integer id){userRepository.deleteById(id);}
}

三、测试代码块

import com.boot.jpa.JpaApplication;
import com.boot.jpa.entity.User;
import com.boot.jpa.service.UserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.annotation.Resource;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = JpaApplication.class)
public class UserJpaTest {@Resourceprivate UserService userService ;@Testpublic void addUser (){User user = new User() ;user.setName("知了一笑");user.setAge(22);userService.addUser(user);User user1 = new User() ;user1.setName("cicada");user1.setAge(23);userService.addUser(user1);}@Testpublic void findByAge (){Integer age = 22 ;// User{id=3, name='知了一笑', age=22}System.out.println(userService.findByAge(age));}@Testpublic void findByNameAndAge (){System.out.println(userService.findByNameAndAge("cicada",23));}@Testpublic void findSql (){// User{id=4, name='cicada', age=23}System.out.println(userService.findSql("cicada"));}@Testpublic void update (){User user = new User() ;// 如果这个主键不存在,会以主键自增的方式新增入库user.setId(3);user.setName("哈哈一笑");user.setAge(25);userService.update(user) ;}@Testpublic void deleteStudentById (){userService.deleteStudentById(5) ;}
}

四、源代码地址

GitHub地址:知了一笑
https://github.com/cicadasmile/spring-boot-base
码云地址:知了一笑
https://gitee.com/cicadasmile/spring-boot-base


SpringBoot2.0 基础案例(09):集成JPA持久层框架,简化数据库操作相关推荐

  1. SpringBoot2.0基础案例分类总结,后续更新计划说明

    一.基础案例 1.基础案例概览 历时一个半月,SpringBoot2.0基础案例的文章基本更新完毕了,基础案例包含了SpringBoot的基础教程,高级应用,日志配置,数据库使用,事务管理等.关于Sp ...

  2. SpringBoot2.0 基础案例(12):基于转账案例,演示事务管理操作

    本文源码 GitHub地址:知了一笑 https://github.com/cicadasmile/spring-boot-base 一.事务管理简介 1.事务基本概念 一组业务操作ABCD,要么全部 ...

  3. SpringBoot2.0 基础案例(10):整合Mybatis框架,集成分页助手插件

    一.Mybatis框架 1.mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获 ...

  4. SpringBoot2.0 基础案例(07):集成Druid连接池,配置监控界面

    一.Druid连接池 1.druid简介 Druid连接池是阿里巴巴开源的数据库连接池项目.Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能.功能强大,能防SQL注入,内置Login ...

  5. SpringBoot2.0 基础案例(14):基于Yml配置方式,实现文件上传逻辑

    本文源码 GitHub地址:知了一笑 https://github.com/cicadasmile/spring-boot-base 一.文件上传 文件上传是项目开发中一个很常用的功能,常见的如头像上 ...

  6. SpringBoot2.0基础案例(01):环境搭建和RestFul风格接口

    一.SpringBoot 框架的特点 SpringBoot2.0 特点 1)SpringBoot继承了Spring优秀的基因,上手难度小 2)简化配置,提供各种默认配置来简化项目配置 3)内嵌式容器简 ...

  7. SpringBoot2.0 基础案例(16):配置Actuator组件,实现系统监控

    本文源码 GitHub地址:知了一笑 https://github.com/cicadasmile/spring-boot-base 一.Actuator简介 1.监控组件作用 在生产环境中,需要实时 ...

  8. SpringBoot2.0 基础案例(15):配置MongoDB数据库,实现增删改查逻辑

    本文源码 GitHub地址:知了一笑 https://github.com/cicadasmile/spring-boot-base 一.NoSQL简介 1.NoSQL 概念 NoSQL( Not O ...

  9. SpringBoot2.0 基础案例(13):基于Cache注解模式,管理Redis缓存

    本文源码 GitHub地址:知了一笑 https://github.com/cicadasmile/spring-boot-base 一.Cache缓存简介 从Spring3开始定义Cache和Cac ...

最新文章

  1. js去除数组中重复值
  2. java web 初始化方法_Java Web(二) 类的初始化及初始化顺序
  3. python post请求 上传图片_利用python模拟实现POST请求提交图片的方法
  4. 实战Nginx与PHP(FastCGI)的安装、配置与优化
  5. getContextPath、getServletPath、getRequestURI的区别
  6. linux等陆不上ftp,vsftp连接不上解决方法
  7. 长方形与圆最近连线LISP_餐桌到底选方还是圆?可千万别买错了,今天我们好好聊聊...
  8. 技术文档的撰写_如何撰写出色的技术博客文章
  9. 指定精确度(*号的使用)
  10. 奥特曼传奇英雄存档丢了怎么找回_热血传奇:法师前期跨级刷怪到底划不划算?...
  11. 「懒惰的美德」我用 python 写了个自动生成给文档生成索引的脚本
  12. CV学习笔记-Alexnet
  13. vue3 loadsh 防抖功能
  14. 数字图像处理-高反差保留算法
  15. 译:WebRTC视频通信
  16. STM8S005 TIM1定时器PWM应用
  17. 《虚拟化与云计算技术》实训
  18. python中如何表示非_如何在python中显示非英语字符?
  19. qq 营销,微信营销,微博营销
  20. 申请专利对大学生有什么用?

热门文章

  1. 再次提醒自己测试过程中的侥幸导致失败
  2. 1281. 整数的各位积和之差
  3. 从零开始学PowerShell(8)创建一个进度条
  4. Redis 哨兵模式
  5. 学习Python第二天
  6. 【转载】C#中可使用string.Empty代表空字符
  7. 手眼标定eye-to-hand 示例:handeye_stationarycam_calibration
  8. Centos 下PHP编译安装fileinfo扩展
  9. webrtp官方demo运行
  10. Android之sqlite的使用 (转载)