Spring Boot入门——JPA
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 { @Resource
private GradeDAO gradeDAO;
@Transactional
public 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 { @Resource
private GradeService gradeService; @RequestMapping("/finfByGradeNm")
public Grade finfByGradeNm(String gradeNm){ System.out.println("finfByGradeNm");
return gradeService.findByGradeNm(gradeNm);
}
}
e、测试结果

Spring Boot入门——JPA的更多相关文章
- 玩转spring boot——结合JPA入门
参考官方例子:https://spring.io/guides/gs/accessing-data-jpa/ 接着上篇内容 一.小试牛刀 创建maven项目后,修改pom.xml文件 <proj ...
- Spring Boot入门系列(二十六)超级简单!Spring Data JPA 的使用!
之前介绍了Mybatis数据库ORM框架,也介绍了使用Spring Boot 的jdbcTemplate 操作数据库.其实Spring Boot 还有一个非常实用的数据操作框架:Spring Data ...
- Spring Boot 入门系列(二十八) JPA 的实体映射关系,一对一,一对多,多对多关系映射!
前面讲了Spring Boot 使用 JPA,实现JPA 的增.删.改.查的功能,同时也介绍了JPA的一些查询,自定义SQL查询等使用.JPA使用非常简单,功能非常强大的ORM框架,无需任何数据访问层 ...
- spring boot入门教程——Spring Boot快速入门指南
Spring Boot已成为当今最流行的微服务开发框架,本文是如何使用Spring Boot快速开始Web微服务开发的指南,我们将使创建一个可运行的包含内嵌Web容器(默认使用的是Tomcat)的可运 ...
- Spring Boot 入门之持久层篇(三)
原文地址:Spring Boot 入门之持久层篇(三) 博客地址:http://www.extlight.com 一.前言 上一篇<Spring Boot 入门之 Web 篇(二)>介绍了 ...
- 玩转spring boot——结合JPA事务
接着上篇 一.准备工作 修改pom.xml文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&q ...
- 161103、Spring Boot 入门
Spring Boot 入门 spring Boot是Spring社区较新的一个项目.该项目的目的是帮助开发者更容易的创建基于Spring的应用程序和服务,让更多人的人更快的对Spring进行入门体验 ...
- spring boot 入门操作(二)
spring boot入门操作 使用FastJson解析json数据 pom dependencies里添加fastjson依赖 <dependency> <groupId>c ...
- spring boot 入门操作(三)
spring boot入门操作 devtools热部署 pom dependencies里添加依赖 <dependency> <groupId>org.springframew ...
随机推荐
- 深入理解javascript原型和闭包(17)——补充:上下文环境和作用域的关系
摘自:http://www.cnblogs.com/wangfupeng1988/p/4000798.html:作者:王福朋: 本系列用了大量的篇幅讲解了上下文环境和作用域,有些人反映这两个是一回儿事 ...
- spring中实现自己的初始化逻辑
实现这两个listener都可以进行自己的初始化逻辑. InitializingBean.afterPropertiesSet 这个优先调用 ApplicationListener.onApplica ...
- Python如何实现单例模式?其他23种设计模式python如何实现?
#使用__metaclass__(元类)的高级python用法 class Singleton2(type): def __init__(cls, name, bases, dict): super( ...
- git钩子
定义: 钩子:由事件触发的函数 分类: 客户端钩子:由诸如提交和合并这样的操作触发 服务器端钩子:由诸如接收被推送的提交这样的联网操作触发 安装: a.钩子都被存储在 .git 目录下的 hooks ...
- 软件磁盘阵列(RAID)
RAID软件磁盘阵列 RAID 即廉价磁盘冗余阵列,其高可用性和可靠性适用于大规模环境中,相比正常使用,数据更需要被保护.RAID 是将多个磁盘整合的大磁盘,不仅具有存储功能,同时还有数据保护功能. ...
- 4.4 使用STM32控制MC20进行GPS帧数据解析
需要准备的硬件 MC20开发板 1个 https://item.taobao.com/item.htm?id=562661881042 GSM/GPRS天线 1根 https://item.taoba ...
- from PyQt4.QtGui import * 提示 ImportError: DLL load failed: %1 is not a valid Win32 application.
个人用64位电脑安装了64位的PyQt后 from PyQt4.QtGui import * 提示 ImportError: DLL load failed: %1 is not a valid Wi ...
- 剑指offer 面试8题
面试8题: 题目:二叉树的下一个节点 题目描述:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 解题思路:详见剑 ...
- 【转】Python爬虫_示例
爬虫项目:爬取汽车之家新闻资讯 # requests+Beautifulsoup爬取汽车之家新闻 import requests from bs4 import BeautifulSoup res ...
- Struts2笔记01——基础MVC架构(转)
原始内容:https://www.tutorialspoint.com/struts_2/basic_mvc_architecture.htm Apache Struts 2是用来创建企业级Java ...