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的更多相关文章

  1. 玩转spring boot——结合JPA入门

    参考官方例子:https://spring.io/guides/gs/accessing-data-jpa/ 接着上篇内容 一.小试牛刀 创建maven项目后,修改pom.xml文件 <proj ...

  2. Spring Boot入门系列(二十六)超级简单!Spring Data JPA 的使用!

    之前介绍了Mybatis数据库ORM框架,也介绍了使用Spring Boot 的jdbcTemplate 操作数据库.其实Spring Boot 还有一个非常实用的数据操作框架:Spring Data ...

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

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

  4. spring boot入门教程——Spring Boot快速入门指南

    Spring Boot已成为当今最流行的微服务开发框架,本文是如何使用Spring Boot快速开始Web微服务开发的指南,我们将使创建一个可运行的包含内嵌Web容器(默认使用的是Tomcat)的可运 ...

  5. Spring Boot 入门之持久层篇(三)

    原文地址:Spring Boot 入门之持久层篇(三) 博客地址:http://www.extlight.com 一.前言 上一篇<Spring Boot 入门之 Web 篇(二)>介绍了 ...

  6. 玩转spring boot——结合JPA事务

    接着上篇 一.准备工作 修改pom.xml文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&q ...

  7. 161103、Spring Boot 入门

    Spring Boot 入门 spring Boot是Spring社区较新的一个项目.该项目的目的是帮助开发者更容易的创建基于Spring的应用程序和服务,让更多人的人更快的对Spring进行入门体验 ...

  8. spring boot 入门操作(二)

    spring boot入门操作 使用FastJson解析json数据 pom dependencies里添加fastjson依赖 <dependency> <groupId>c ...

  9. spring boot 入门操作(三)

    spring boot入门操作 devtools热部署 pom dependencies里添加依赖 <dependency> <groupId>org.springframew ...

随机推荐

  1. hadoop报错java.io.IOException: Bad connect ack with firstBadLink as 192.168.1.218:50010

    [root@linuxmain hadoop]# bin/hadoop jar hdfs3.jar com.dragon.test.CopyToHDFS Java HotSpot(TM) Client ...

  2. TFS二次开发-基线文件管理器(2)-TFS登录

    首先需要做一个TFS的登录. 以前的文章是使用的DomainProjectPicker 最新的VS里面使用的是TeamProjectPicker 首先可以在WinForm程序上写一个Button,然后 ...

  3. 计算属性 vs 侦听属性 当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的

    https://cn.vuejs.org/v2/guide/computed.html#基础例子 计算属性 vs 侦听属性 Vue 提供了一种更通用的方式来观察和响应 Vue 实例上的数据变动:侦听属 ...

  4. <2013 06 29> In Deutschland. Thinking in Mechanism, EE, CS, etc.

    一 在德国近一个月了,主要去了慕尼黑周边的几个景点,天鹅城堡啊,国王湖啊,然后就是在市区逛,玛丽安广场,伊萨河,英国公园,德意志博物馆... ... 总体的印象是非常好的,只是自己不怎么懂德语,但这里 ...

  5. ECMAScript6箭头函数ArrowFunction"=>"

    一.说明 ECMAScript6可以用箭头"=>"定义函数.x => x * x或(x) => {return x * x;}与匿名函数function(x){r ...

  6. Python3.6全栈开发实例[026]

    27.文件a.txt内容:每一行内容分别为商品名字,价钱,个数.apple 10 3tesla 100000 1mac 3000 2lenovo 30000 3chicken 10 3通过代码,将其构 ...

  7. PyNN standard model(转)

    PyNN standard model 转自http://blog.csdn.net/qq_34886403/article/details/76667477

  8. 20170517 ABAP debug

    1.新版本调试模式下的观察点: 在新版本模式画面的工具栏上选择'watchpoint' 按钮可以创建观察点. 举例:当生产内表itab第5行时,设置为观察点,追加条件如下: Lines(itab) = ...

  9. activiti部署到linux后流程图不显示汉字的问题

    linux和windows的字体文件一般是不一样的,默认情况下,linux的java7中一般不支持中文,activiti的动态流程图中的汉字需要java调用汉字的字库,这里需要配置一下java的汉字字 ...

  10. LeetCode:罗马数字转整数【13】

    LeetCode:罗马数字转整数[13] 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 10 ...