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包,本步驟的其他細節參數省略,具體參考如下截圖:

1584209192423091131.jpguploading.4e448015.gif轉存失敗重新上傳取消

3)點擊“Generate-Crtl+”按鈕下載項目壓縮包,解壓後使用IntelliJ IDEA開發工具,選擇導航欄File->Project Structure… -> + ,導入Maven項目後點擊“OK”,如圖所示:

4)選中右側Maven菜單,執行install命令,等待執行完成(時間太長的話重複執行幾遍試試或者換Maven數據源),如圖所示:

1584209192838063469.jpguploading.4e448015.gif轉存失敗重新上傳取消

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;
    }

    public String getName() {
return name;
    }

    public void setName(String name) {
this.name = name;
    }

    public String getDetail() {
return detail;
    }

    public void setDetail(String detail) {
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)// 取消自動回滾
    public void testInsertUsers(){
BootUser users = new BootUser();
users.setName("關注微信公衆號“Java精選”");
users.setDetail("Spring Boot從入門到精通系列文章持續更新中,帶你從入門到精通,玩轉Spring Boot框架。");
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應用框架就完事了,後續會更新關於源碼層次的文章,歡迎大家收藏便於瀏覽。下面大家有時間的話可以試一試,有什麼疑問歡迎下方留言。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章