JPA最大的特点就是可以根据@Entity自动创建你数据库表,用户只需要声明持久层的接口,不需要实现该接口

1、JPA概念

  JPA全称Java Persistence API,JPA通过JDK5.0注解或XML描述对象、关系表的映射关系,并将运行期的实体对象持久化到数据库中。

  JPA是Sun官方提供发Java持久化规范,为java开发人员提供了一种对象/关系映射工具来管理java应用中的关系数据。

  持久化(Persistence),即把数据保存到可永久保存的存储设备中(如磁盘),持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中或XML数据文件中。

2、Hibernate概念

  Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的ORM框架。可以自动生成SQL语句,自动执行,使得java程序员可以随心所欲的使用对象编程的思想来操作数据库。

3、Spring Boot JPA特点

  a、简洁,只需要声明接口,接口无需实现

  b、简单易用,提供了多种不同功能的接口

  c、集成了多种查询策略,支持JPQL

  d、简化了排序分页等功能

  e、可以和Spring Boot整合,进一步简化

  f、支持扩展

4、使用Spring Boot JPA的步骤

  a、在pom.xml文件中添加mysql,spring-data-jpa依赖

    <!-- mysql依赖 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.42</version></dependency><!-- spring-boot-jpa依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency>

  b、在application.properties文件中配置mysql连接配置信息

#mysql配置信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

# 下面为连接池的补充设置,应用到上面所有数据源中# 初始化大小,最小,最大#spring.datasource.initialSize=5#spring.datasource.minIdle=5#spring.datasource.maxActive=20#配置获取连接等待超时的时间#spring.datasource.maxWait=60000#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 #spring.datasource.timeBetweenEvictionRunsMillis=60000# 配置一个连接在池中最小生存的时间,单位是毫秒 #spring.datasource.minEvictableIdleTimeMillis=300000#spring.datasource.validationQuery=SELECT 1 FROM DUAL#spring.datasource.testWhileIdle=true#spring.datasource.testOnBorrow=false#spring.datasource.testOnReturn=false# 打开PSCache,并且指定每个连接上PSCache的大小 #spring.datasource.poolPreparedStatements=true#spring.datasource.maxPoolPreparedStatementPerConnectionSize=20# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 #spring.datasource.filters=stat,wall,log4j# 通过connectProperties属性来打开mergeSql功能;慢SQL记录#spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000# 合并多个DruidDataSource的监控数据#spring.datasource.useGlobalDataSourceStat=true 

  c、在application.properties文件中配置JPA配置信息

#spring boot JPA相关配置
spring.jpa.datasource=MYSQL# Show or not log for each sql query
spring.jpa.show-sql = true# Hibernate ddl auto (create, create-drop, update)
spring.jpa.hibernate.ddl-auto = update# Naming strategy
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy#spring.jpa.database=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

  d、编写测试样例

/*
* Grade类
*/
package com.wyl.bean;import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;@Entity
public class Grade {@Id@GeneratedValue(strategy=GenerationType.AUTO)//设置id自增长private int id;private String gradeNm;private int teacherId;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getGradeNm() {return gradeNm;}public void setGradeNm(String gradeNm) {this.gradeNm = gradeNm;}public int getTeacherId() {return teacherId;}public void setTeacherId(int teacherId) {this.teacherId = teacherId;}
}

Grade.class

/*** GradeDAO,数据库操作类必须继承Repository类*/package com.wyl.dao;import org.springframework.data.repository.Repository;import com.wyl.bean.Grade;
/**  Spring Boot中dao最重要的就是继承 Repository类,完成数据库相应的操作 *  GradeDAO也可以继承CrudRepository类,调用Spring boot中已有的数据库操作方法更方便*  GradeDAO继承PagingAndSortingRepository类,完成分页查询和排序  *  */
public interface GradeDAO extends Repository<Grade, Integer>{    //自定义的数据库操作方法//public Grade findByGradeNm(String gradeNm);    @Query("from Grade where gradeNm=:nm")    public Grade findByGradeNm(@Param("nm")String gradeNm);
}

package com.wyl.service;import javax.annotation.Resource;import org.springframework.stereotype.Service;import com.wyl.bean.Grade;
import com.wyl.dao.GradeDAO;/*** GradeService类,调用gradeDAO中的方法* */
@Service
public class GradeService {@Resourceprivate GradeDAO gradeDAO;  @Transactionalpublic Grade findByGradeNm(String gradeNm){return gradeDAO.findByGradeNm(gradeNm);}    //分页查询  /*@Transactional    public Iterable<Grade> getAll(){        return gradeDAO3.findAll(new PageRequest(0, 4));    }

  //排序查询    @Transactional    public Iterable<Grade> getAll2(){        Sort sort = new Sort(Sort.Direction.DESC, "teacherId");        return gradeDAO3.findAll(sort);    }*/
}

package com.wyl.controller;import javax.annotation.Resource;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import com.wyl.bean.Grade;
import com.wyl.service.GradeService;@RestController
public class JPAController {@Resourceprivate GradeService gradeService;@RequestMapping("/finfByGradeNm")public Grade finfByGradeNm(String gradeNm){System.out.println("finfByGradeNm");return gradeService.findByGradeNm(gradeNm);}
}

  e、测试结果

    

转载于:https://www.cnblogs.com/studyDetail/p/7017754.html

Spring Boot入门——JPA相关推荐

  1. Spring Boot 入门系列(二十八) JPA 的实体映射关系,一对一,一对多,多对多关系映射!...

    前面讲了Spring Boot 使用 JPA,实现JPA 的增.删.改.查的功能,同时也介绍了JPA的一些查询,自定义SQL查询等使用.JPA使用非常简单,功能非常强大的ORM框架,无需任何数据访问层 ...

  2. Spring Boot 入门

    一.Spring Boot 入门 1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.微服务 2014,m ...

  3. Spring Boot 入门与实战笔记

    **一.**Spring Boot 入门 1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.微服务 20 ...

  4. 使用PostgreSQL使用Spring Boot和JPA构建基本应用

    "我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证. 每个不平 ...

  5. Spring Boot入门到牛X

    Spring Boot入门到牛X 1.Spring Boot 项目下载地址:https://download.csdn.net/download/weixin_39549656/10287664 1. ...

  6. Spring Boot 入门笔记

    一.Spring Boot 入门 1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.微服务 2014,m ...

  7. SpringBoot开发之Spring Boot入门

    SpringBoot开发之SpringBoot入门 一.Spring Boot概述 1.什么是Spring Boot 2.Spring Boot的优点 二.第一个Spring Boot应用 1.创建S ...

  8. Spring Boot入门——全局异常处理

    Spring Boot入门--全局异常处理 参考文章: (1)Spring Boot入门--全局异常处理 (2)https://www.cnblogs.com/studyDetail/p/702758 ...

  9. spring boot 系列之四:spring boot 整合JPA

    上一篇我们讲了spring boot 整合JdbcTemplate来进行数据的持久化, 这篇我们来说下怎么通过spring boot 整合JPA来实现数据的持久化. 一.代码实现 修改pom,引入依赖 ...

最新文章

  1. C#调用API向外部程序发送数据(转载)
  2. Flutter中用ListView嵌套GridView报错异常
  3. linux 密码文件 /etc/shadow md5,SHA256,SHA512 破解
  4. Cow Picnic(POJ-3256)
  5. java page 分页_自己整理写的java分页工具条pageUtil
  6. 5.编译并运行erlang程序
  7. 计算机专业英语四六级,英语四级历年真题,历年四六级真题电子版?
  8. 计算机鼠标右键的主要应用是什么原因,win7电脑桌面鼠标右键功能和作用|win7 64位桌面右键没反应,反应非常慢...
  9. 陌陌八成营收靠直播 直播行业已进入两极分化
  10. 重磅!VirtualXposed,让你无需Root也能使用Xposed框架!
  11. Call to undefined function curl_init()错误解决方法
  12. 【Windows】win10或win11的资源管理器 文件夹中存在今天、昨天、本周更早时候之类的分割线分组依据如何怎么去除去掉?
  13. axis=0 与 axis=1 的区分
  14. 微软os snmp服务器,windows服务器snmp v3
  15. js中的对象、函数定义以及形参和实参
  16. 00023 高等数学(工本) 公式
  17. Cloud Computing:基于无影云电脑利用Python语言实现绘制“可爱小老虎”虎年快乐及无影云电脑简介、应用场景、使用体验(五步快速上手)分享图文教程之详细攻略
  18. Arduino基础入门之八 调速小风扇
  19. ARM Linux RTC 时间的读取与设置
  20. 干货 | 专利怎么检索?手把手教授指南来了

热门文章

  1. 不能执行已释放 script 的代码_[漏洞预警]CVE20190708远程桌面代码执行漏洞利用工具已放出...
  2. grep 显示前后几行
  3. 怎么用cmd关闭系统弹窗_SD卡受损怎么修复?教你一招三步搞定
  4. pyplot 画多个图时搅合到了一起_聚镁Art0X丨马歇尔-他与他的黑人画
  5. 调试一个c语言程序要经过,c语言程序调试
  6. crowd counting_[crowd_counting]-MANet_arxiv1901
  7. led灯条维修_led硅胶线条灯不亮的8大原因,怎样识别led灯带的质量
  8. 酱油和gbt酱油哪个好_韩国酱油真的这么好,到底怎么挑?
  9. busybox arm-linux-gcc 4.4.4库的路径,BUSYBOX编译错误及解决方法总结
  10. python日历提醒_python打印日历