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. django框架进阶-AJAX-长期维护

    ##################   预备知识---json     ####################### 预备知识,json 什么是json?这是一种数据格式,和语言没有关系, 为什么 ...

  2. MAC地址和IP地址是否缺一不可

    答案是肯定的,我们来具体分析: 在网络传输的过程中,第一次将信息从A端发往B端时,首先在A端需要将信息从应用层开始到物理层进行逐层封装,到达B端后再从物理层到应用层进行逐层分用解包,最后拿到信息. 信 ...

  3. iOS高仿微信悬浮窗、忍者小猪游戏、音乐播放器、支付宝、今日头条布局滚动效果等源码

    iOS精选源码 iOS WKWebView的使用源码 模仿apple music 小播放器的交互实现 高仿微信的悬浮小窗口 iOS仿支付宝首页效果 [swift]仿微信悬浮窗 类似于今日头条,网易新闻 ...

  4. ISBN|方正|超星|The national academies press|OECD|RSC|Springer Link|Knovel|Encyclopedia Britannica

    图书使用图书分类号ISBN作为图书的ID 大英百科全书(Encyclopedia Britannica)可用于找寻关键词或关键词相关信息,便于构建准确的检索式: Knovel:可使用物理化学性质查找相 ...

  5. servlet简单概括总结

    最近在看java web的相关内容,不管是整体还是细节,要学习的知识有很多,所以有一个好的学习体系非常重要.在阅读学习一些博客和教程中关于servlet的内容后,现将知识体系和自己的总结体会进行梳理, ...

  6. 提升项目一:花卉管理系统(Servlet+JSP完成)

    这个是写的第一个项目:使用Servlet+JSP完成,加上对底层构架的理解,才可以对后面要接触使用的ssh框架的深刻理解 2017-02-11: 完成对进货业务的操作, 下一步完成对销货业务的操作

  7. Nginx笔记总结十一:Nginx重写规则指南

    依赖PCRE库,需要安装pcre,最多循环10次,超过后返回500错误, 1.       rewrite模块指令 break:完成当前设置的重写规则,停止执行其他的重写规则 if:  if () { ...

  8. Java ERROR JDWP Unable to get JNI 1.2 environment, jvm

    Java: ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2 DWP exit erro ...

  9. Java遍历文件夹的两种方法(非递归和递归)

    import java.io.File; import java.util.LinkedList; public class FileSystem {    public static int num ...

  10. 如何使用隐式转换扩展DataFrame和RDD以及其他的对象

    目的 DataFrame可以点出来很多方法,都是DF内置的. 比如说:df.withColumn(),df.printSchema(). 但是如果你想打印df中的分区位置信息,以及每个key有多少记录 ...