Spring Boot从入门到精通(九)整合Spring Data JPA应用框架
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应用框架的更多相关文章
- Spring Boot从入门到精通(二)配置GitHub并上传Maven项目
简单介绍一下GitHub,它是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管,故名GitHub. GitHub于2008年4月10日正式上线,除了Git代码仓库托管 ...
- Spring Boot从入门到精通(五)多数据源配置实现及源码分析
多数据源配置在项目软件中是比较常见的开发需求,Spring和Spring Boot中对此都有相应的解决方案可供大家参考.在Spring Boot中,如MyBatis.JdbcTemplate以及Jpa ...
- Spring Boot从入门到精通(六)集成Redis实现缓存机制
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言 ...
- Spring Boot从入门到精通(七)集成Redis实现Session共享
单点登录(SSO)是指在多个应用系统中,登录用户只需要登录验证一次就可以访问所有相互信任的应用系统,Redis Session共享是实现单点登录的一种方式.本文是通过Spring Boot框架集成Re ...
- Spring Boot从入门到精通(八)日志管理实现和配置信息分析
Spring Boot对日志的处理,与平时我们处理日志的方式完全一致,它为Java Util Logging.Log4J2和Logback提供了默认配置.对于每种日志都预先配置使用控制台输出和可选的文 ...
- 快速开发架构Spring Boot 从入门到精通 附源码
导读 篇幅较长,干货十足,阅读需花费点时间.珍惜原创,转载请注明出处,谢谢! Spring Boot基础 Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计 ...
- Spring Boot从入门到精通(一)搭建第一个Spring Boot程序
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过 ...
- Spring Boot从入门到实战:整合Web项目常用功能
在Web应用开发过程中,一般都涵盖一些常用功能的实现,如数据库访问.异常处理.消息队列.缓存服务.OSS服务,以及接口日志配置,接口文档生成等.如果每个项目都来一套,则既费力又难以维护.可以通过Spr ...
- Spring Boot从入门到精通(十一)集成Swagger框架,实现自动生成接口文档
Swagger是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.Swagger 是一组开源项目,其中主要要项目如下: Swagger-tools:提供各种与S ...
随机推荐
- VS2010 常用的快捷键
1.强迫智能感知:Ctrl+J:2.强迫智能感知显示参数信息:Ctrl-Shift-空格:3.格式化整个块:Ctrl+K+F4.检查括号匹配(在左右括号间切换): Ctrl +]5.选中从光标起到行首 ...
- mysql 多字段更新
更新一个字段当好写 ; Query OK, rows affected (17.36 sec) Rows matched: Changed: Warnings: 问题是想更新多个字段sql serve ...
- Python迭代器和关键字 global ,nonlocal
1.关键字 global : 可以修改全局变量 可以在局部作用域声明一个全局变量,剪切 : 此时局部作用域没有该变量,全局作用域中有 name = 1 def func(): global name ...
- C语言占位符(待完善)
%c 读入一个字符 %s 读入一个字符串,遇到空格制表符或者换行符时结束. %d 读入一个十进制整数 %x或者%X 读入一个十六进制整数(读出时,%x:小写,%X:大写) %o 读入一个八进制 ...
- webStrom 运行React-Native项目
1.点击“Edit Configurations...” 2.点击“+”选择“npm” 3.“Name”随便输入一个名称,“Command”改为“help”,然后在点击“+”号. 4.选择“Run E ...
- Hexo博客部署
前些天使用wordpress程序搭建了个人网站,但感觉太重比较适合个人空间,所以这次介绍Hexo搭建免费博客,先提供官网给大家英文版的请点击这里,中文版的请点击这里,在安装一个Git,再是github ...
- unittest(23)- python发邮件
import smtplib import time from email.mime.multipart import MIMEMultipart from email.mime.text impor ...
- haproxy笔记之四:配置文件中的关键字参考
3.1 balance balance <algorithm> [ <arguments> ]balance url_param <param> [check_po ...
- python 写个冒泡排序吧
冒泡排序 介绍: 冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作 ...
- mysql中not exists的简单理解
http://www.cnblogs.com/glory-jzx/archive/2012/07/19/2599215.html http://sunxiaqw.blog.163.com/blog/s ...