JPA是什么?

JPA全称Java Persistence API,是Sun官方提出的Java持久化规范。是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。

JPA主要为了简化现有的Java EE和Java SE应用的对象持久化开发工作和整合ORM技术实现持久化领域的统一。JPA是在充分吸收了现有Hibernate,TopLink,JDO等ORM框架的基础上发展而来的,具有易于使用,伸缩性强等优点。从目前的开发社区的反应上看,JPA受到了极大的支持和赞扬,其中就包括了Spring与EJB3.0的开发团队。

Spring Data JPA是什么?

Spring Data JPA是Spring基于ORM框架、JPA规范的基础上封装的一套JPA应用框架,底层使用了Hibernate JPA技术来实现的,可以使开发者用极简的代码即可实现对数据的访问和操作。它提供了包括增删改查等在内的常用功能,且易于扩展!使用Spring Data JPA可以极大提高开发效率。

本篇文章主要讲述一下如何使用Spring Boot框架整合Spring Data JPA应用框架,欢迎朋友们关注“Java精选”微信公众号,每日持续推荐优质文章,下面进入正题。

Spring Data JPA项目

1、Maven构建项目

1)Spring Boot官网:http://start.spring.io/

2)选择构建工具

Spring Boot官网选择构建不同类型的项目其选项的各个参数含义可以参考之前写的“Spring Boot从入门到精通(一)搭建第一个Spring Boot程序”章节,Spring Boot从入门到精通是一整篇系列的文章集,来自于“Java精选”微信公众号,欢迎感兴趣的朋友关注。

Maven构建项目时依赖Spring Data JPA包,本步骤的其他细节参数省略,具体参考如下截图:

3)点击“Generate-Crtl+”按钮下载项目压缩包,解压后使用IntelliJ IDEA开发工具,选择导航栏File->Project Structure… -> + ,导入Maven项目后点击“OK”,如图所示:

4)选中右侧Maven菜单,执行install命令,等待执行完成(时间太长的话重复执行几遍试试或者换Maven数据源),如图所示:

2、修改pom.xml文件

增加MySQL数据库驱动包,修改完配置文件后需重新执行Maven命令,不然所依赖的包可能会引用无效,具体配置信息如下:

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>

  

之前有朋友问为什么不需要指定包?在这里解释一下。

spring-boot-starter-parenth已经提供了常用的jar包版本,若指定版本号会覆盖官方推荐版本,使用maven helper查看一下有没有冲突即可。

3、配置数据源信息
在application.properties配置文件中,增加内容如下:

#数据库
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/dba
spring.datasource.username=root
spring.datasource.password=123456
spring.jpa.hibernate.ddl-auto=none
spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect #端口号
server.port=8080 spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.type=trace
spring.jpa.properties.hibernate.use_sql_comments=true
spring.jpa.properties.hibernate.jdbc.batch_size=50
logging.level.org.hibernate.type.descriptor.sql=trace

  

4、编写BootUser类文件BootUser类实体对应MySQL数据库表的字段属性值,具体代码如下:

package com.yoodb.study.demo05.entity;

import javax.persistence.*;
import java.io.Serializable; @Entity
@Table(name="boot_user")
public class BootUser implements Serializable {
@Id
//strategy=GenerationType.IDENTITY 自增长
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name="id")
private String id; @Column(name="user_name")
private String name; @Column(name="detail")
private String detail; public String getId() {
return id;
} public void setId(String id) {
this.id=id;
} publicStringgetName(){
returnname;
} publicvoidsetName(Stringname){
this.name=name;
} publicStringgetDetail(){
returndetail;
} publicvoidsetDetail(Stringdetail){
this.detail=detail;
}
}

  

5、编写Repository文件新增UserRepository类文件,具体代码如下:

package com.yoodb.study.demo05.repository;

import com.yoodb.study.demo05.entity.BootUser;
import org.springframework.data.jpa.repository.JpaRepository; public interface UserRepository extends JpaRepository<BootUser, Integer> { }

  

6、编写单元测试类文件新增UsersDaoImplTest类文件,具体代码如下:

package com.yoodb.study.demo05;

import com.yoodb.study.demo05.repository.UserRepository;
import com.yoodb.study.demo05.entity.BootUser; import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback; import javax.transaction.Transactional; @SpringBootTest
public class UsersDaoImplTest {
@Autowired
private UserRepository userRepository; /**
* 添加用户
*/
@Test
@Transactional//对于事务提交方式默认回滚
@Rollback(false)//取消自动回滚
publicvoidtestInsertUsers(){
BootUserusers=newBootUser();
users.setName("关注微信公众号“Java精选”");
users.setDetail("SpringBoot从入门到精通系列文章持续更新中,带你从入门到精通,玩转SpringBoot框架。");
this.userRepository.save(users);
} }

  

7、单元测试在IntelliJ IDEA运行单元测试时提示错误,信息如下:

Error running 'UsersDaoImplTest.testInsertUsers': Failed to resolve org.junit.platform:junit-platform-launcher:1.6.0

问题分析:这是由于IntelliJ试图在不使用IDEA中配置的Maven settings.xml配置文件的情况下,直接连接至Maven Central仓库来执行单元测试,但由于个人配置参数导致无法连接成功。解决办法:在Maven项目中pom.xml文件中增加依赖包,具体配置内容如下:

<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<scope>test</scope>
</dependency>

再次,执行单元测试即可正常运行。

来源:素文宅博客

转自:https://blog.yoodb.com/yoodb/article/detail/1574

本文“Spring Boot从入门到精通(九)整合Spring Data JPA应用框架”文章的项目源码(springboot-study-demo05)地址:https://github.com/yoodb/springboot

到此,关于Spring boot如何整合Spring Data JPA应用框架就完事了,后续会更新关于源码层次的文章,欢迎大家收藏便于浏览。下面大家有时间的话可以试一试,有什么疑问欢迎下方留言。

Spring Boot从入门到精通(九)整合Spring Data JPA应用框架的更多相关文章

  1. Spring Boot从入门到精通(二)配置GitHub并上传Maven项目

    简单介绍一下GitHub,它是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管,故名GitHub. GitHub于2008年4月10日正式上线,除了Git代码仓库托管 ...

  2. Spring Boot从入门到精通(五)多数据源配置实现及源码分析

    多数据源配置在项目软件中是比较常见的开发需求,Spring和Spring Boot中对此都有相应的解决方案可供大家参考.在Spring Boot中,如MyBatis.JdbcTemplate以及Jpa ...

  3. Spring Boot从入门到精通(六)集成Redis实现缓存机制

    Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言 ...

  4. Spring Boot从入门到精通(七)集成Redis实现Session共享

    单点登录(SSO)是指在多个应用系统中,登录用户只需要登录验证一次就可以访问所有相互信任的应用系统,Redis Session共享是实现单点登录的一种方式.本文是通过Spring Boot框架集成Re ...

  5. Spring Boot从入门到精通(八)日志管理实现和配置信息分析

    Spring Boot对日志的处理,与平时我们处理日志的方式完全一致,它为Java Util Logging.Log4J2和Logback提供了默认配置.对于每种日志都预先配置使用控制台输出和可选的文 ...

  6. 快速开发架构Spring Boot 从入门到精通 附源码

    导读 篇幅较长,干货十足,阅读需花费点时间.珍惜原创,转载请注明出处,谢谢! Spring Boot基础 Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计 ...

  7. Spring Boot从入门到精通(一)搭建第一个Spring Boot程序

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过 ...

  8. Spring Boot从入门到实战:整合Web项目常用功能

    在Web应用开发过程中,一般都涵盖一些常用功能的实现,如数据库访问.异常处理.消息队列.缓存服务.OSS服务,以及接口日志配置,接口文档生成等.如果每个项目都来一套,则既费力又难以维护.可以通过Spr ...

  9. Spring Boot从入门到精通(十一)集成Swagger框架,实现自动生成接口文档

    Swagger是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.Swagger 是一组开源项目,其中主要要项目如下: Swagger-tools:提供各种与S ...

随机推荐

  1. HDU-1251-统计难题(Trie树)(BST)(AVL)

    字典树解法(Trie树) Accepted 1251 156MS 45400K 949 B C++ #include"iostream" #include"cstdlib ...

  2. Python自动化之数据驱动(转载下自己的日常练习笔记)

    一.execl数据驱动 1.xlutils简要说明 导包:pip3 install xlutils 注意⚠️:xlutils在介些Execl文件的时候,只识别.xls后缀的文件,如果是.xlsx后缀的 ...

  3. python反转链表和成对反转

    https://www.cnblogs.com/tianqizhi/p/9673894.html https://blog.csdn.net/weixin_34168700/article/detai ...

  4. 题解 P1951 【收费站_NOI导刊2009提高(2)】

    查看原题请戳这里 核心思路 题目让求最大费用的最小值,很显然这道题可以二分,于是我们可以二分花费的最大值. check函数 那么,我们该怎么写check函数呢? 我们可以删去费用大于mid的点以及与其 ...

  5. 当async: true 时,ajax请求是异步的

    方法beforeSend,用于在向服务器发送请求前添加一些处理函数.   type:"GET",//通常会用到两种:GET,POST.默认是:GET      url:" ...

  6. Java 笔试面试(6)异常处理

    Java 笔试面试(6)异常处理 1. finally的代码何时执行? 问题描述:try{}里有一个return语句,那么在这个try后面的finally{}中的代码是否为执行?如果会,是在retur ...

  7. iOS自动化登录测试demo

    <软件自动化测试开发>出版了 测试开发公开课培训大讲堂 微信公众号:测试开发社区 测试开发QQ群:173172133 咨询QQ:7980068 咨询微信:zouhui1003it

  8. 11. 无数人难办事? - 迪米特法则(LoD)

    11.1 第一天上班 时间: 4月2日19点   地点: 小菜大鸟住所的客厅   任务: 小菜, 大鸟      "回来啦! 怎么样? 第一天上班感受多吧." 大鸟关关心的问道.  ...

  9. 手工创建 efi,msr 分区 · Virgil Chan

    昨天在帮同学装 win10 的时候,不小心(不知道那是什么东西)把原系统的 efi 和 msr 盘删了,用 WinNTsetup 安装时 EFI PART 总显示红叉,安装后也进不去系统,想想应该是找 ...

  10. kali pinyin

    重装了kali,原来一直用的ibus pinyin重装之后再apt-get install的时候总是找不到包,换了各种源都不行,纠结N久果断换别的输入法了. apt-get install fcitx ...