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应用框架就完事了,后续会更新关于源码层次的文章,欢迎大家收藏便于浏览。下面大家有时间的话可以试一试,有什么疑问欢迎下方留言。