最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

JPA教程 | 袁庭新老師帶你快速入門Spring Boot整合JPA一文搞定

2023-11-01 15:38 作者:袁庭新  | 我要投稿

在開發(fā)中,我們通常會對數(shù)據(jù)庫的數(shù)據(jù)進行操作,Sprirng Boot對關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫的訪問操作都提供了非常好的整合支持。

01 Spring Boot數(shù)據(jù)訪問概述

Spring Data是Spring提供的一個用于簡化數(shù)據(jù)庫訪問、支持云服務(wù)的開源框架。它是一個傘形項目,包含了大量關(guān)系型數(shù)據(jù)庫及非關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)訪問解決方案,其設(shè)計目的是使我們可以快速且簡單地使用各種數(shù)據(jù)訪問技術(shù)。Spring Boot默認(rèn)采用整合Spring Data的方式統(tǒng)一處理數(shù)據(jù)訪問層,通過添加大量自動配置,引入各種數(shù)據(jù)訪問模板xxxTemplate以及統(tǒng)一的Repository接口,從而達到簡化數(shù)據(jù)訪問層的操作。

Spring Data提供了多種類型數(shù)據(jù)庫支持,Spring Boot對Spring Data支持的數(shù)據(jù)庫進行了整合管理,提供了各種依賴啟動器。通過一張表羅列Spring Boot提供的常見數(shù)據(jù)庫依賴啟動器。

02 Spring Data JP簡介

JPA(Java Persistence API,Java持久化API )是Sun公司官方提出的Java持久化規(guī)范,它為Java開發(fā)人員提供了一種對象/關(guān)系映射的工具管理Java中的關(guān)系型數(shù)據(jù),其主要目的是簡化現(xiàn)有的持久化開發(fā)工作和整合ORM(Object Relational Mapping,對象/關(guān)系映射)技術(shù)。Spring Data在JPA規(guī)范的基礎(chǔ)上,充分利用其優(yōu)點,提出了Spring Data JPA模塊對具有ORM關(guān)系數(shù)據(jù)進行持久化操作。

Spring Data JPA是Spring在ORM框架、JPA規(guī)范的基礎(chǔ)上封裝的一套JPA應(yīng)用框架,提供了增刪改查等常用功能,使開發(fā)者可以用較少的代碼實現(xiàn)數(shù)據(jù)操作,同時還易于擴展。在介紹Spring Boot整合JPA之前,先針對Spring Data JPA的基本使用進行簡單介紹。

2.1?編寫ORM實體類

Spring Data JPA框架是針對具有ORM關(guān)系的數(shù)據(jù)進行操作,所以在使用Spring Data JPA時,首先需要編寫一個實體類與數(shù)據(jù)表進行映射,并且配置好映射關(guān)系。

針對上述代碼,袁老師把用到的注解給大家進行簡要說明。

  • @Entity:標(biāo)注要與數(shù)據(jù)庫做映射的實體類,默認(rèn)情況下,數(shù)據(jù)表的名稱就是首字母小寫的類名。當(dāng)然,還可以使用name屬性指定映射的表名。

  • @ld:標(biāo)注在類屬性或者getter方法上,表示某一個屬性對應(yīng)表中的主鍵。

  • @GeneratedValue:與@ld注解標(biāo)注在同一位置,用于表示屬性對應(yīng)主鍵的生成策略,可省略。Spring Data JPA支持的主鍵生成策略包括有TABLE(使用一個特定的數(shù)據(jù)庫表格來保存主鍵)、SEQUENCE(不支持主鍵自增長的數(shù)據(jù)庫主鍵生成策略)、IDENTITY(主鍵自增)和AUTO(JPA自主選擇前面3種合適的策略,是默認(rèn)選項)。

  • @Column:標(biāo)注在屬性上,當(dāng)類屬性與表字段名不同時,能夠配合name屬性表示類屬性對應(yīng)的表字段名。

2.2?編寫Repository接口

針對不同的表數(shù)據(jù)操作編寫各自對應(yīng)的Repository接口,并根據(jù)需要編寫對應(yīng)的數(shù)據(jù)操作方法。

針對Repository接口編寫時的特殊要求,壹哥給大家解釋一下。

2.2.1 繼承XXRepository<T, ID>接口

我們在使用Spring Data JPA自定義Repository接口時,必須繼承XXRepository<T, ID>接口,其中的T代表要操作的實體類,ID代表實體類主鍵數(shù)據(jù)類型。在上述示例中,選擇繼承了JpaRepository接口。

下面對JpaRepository接口繼承結(jié)構(gòu)中涉及的接口進行說明,具體如下。

  1. Repository是Spring Data JPA提供的用于自定義Repository接口的頂級父接口,該接口中沒有聲明任何方法。

  2. CrudRepository接口是Repository的繼承接口之一,包含了一些基本的CRUD方法。

  3. PagingAndSortingRepository接口繼承CrudRepository接口的同時,提供了分頁和排序兩個方法。

  4. QueryByExampleExecutor接口是進行條件封裝查詢的頂級父接口,允許通過Example實例執(zhí)行復(fù)雜條件查詢。

JpaRepository接口同時繼承了PagingAndSortingRepository接口和QueryByExampleExecutor接口,并額外提供了一些數(shù)據(jù)操作方法。自定義Repository接口文件時,通常會直接選擇繼承JpaRepository接口。

2.2.2 操作數(shù)據(jù)的多種方式

在使用Spring Data JPA進行數(shù)據(jù)操作時,可以有多種實現(xiàn)方式,主要方式如下。

(1).如果自定義接口繼承了JpaRepository接口,則默認(rèn)包含了一些常用的CRUD方法。

(2).自定義Repository接口中,可以使用@Query注解配合SQL語句進行數(shù)據(jù)的查、改、刪操作。

(3).自定義Repository接口中,可以直接使用方法名關(guān)鍵字進行查詢操作。

2.2.3 @Transactional事務(wù)管理

在自定義的Repository接口中,針對數(shù)據(jù)的變更操作(修改、刪除),無論是否使用了@Query注解,都必須在方法上方添加@Transactional注解進行事務(wù)管理,否則程序執(zhí)行就會出現(xiàn)InvalidDataAccessApiUsageException異常。如果在調(diào)用Repository接口方法的業(yè)務(wù)層Service類上已經(jīng)添加了@Transactional注解進行事務(wù)管理,那么Repository接口文件中就可以省略@Transactional注解。

2.2.4 @Moditying注解

在自定義的Repository接口中,使用@Query注解方式執(zhí)行數(shù)據(jù)變更操作(修改、刪除),除了要使用@Query注解,還必須添加@Moditying注解表示數(shù)據(jù)變更。

2.3.5 復(fù)雜條件查詢

JPA還支持使用Example實例進行復(fù)雜條件查詢。例如,針對JpaRepository接口中已存在的findAll(Example<S> var1)方法進行查詢。

03 使用Spring Boot整合JPA

使用Spring Boot整合JPA,具體步驟如下。

1.添加Spring Data JPA依賴啟動器。在項目的pom.xml文件中添加Spring Data JPA依賴啟動器。

注意:

我們并沒有編寫Spring Data JPA對應(yīng)的版本號,這是因為Spring Boot對Spring Data JPA的版本號進行了統(tǒng)一管理。

2.編寫ORM實體類。為了方便操作,以之前創(chuàng)建的數(shù)據(jù)庫表t_comment為例編寫對應(yīng)的實體類,將之前創(chuàng)建的Comment類復(fù)制一份并重命名為Discuss,同時添加JPA對應(yīng)的注解進行映射配置。

3.編寫Repository接口。在com.cy.repository包下創(chuàng)建一個用于對數(shù)據(jù)庫表t_comment進行操作的Repository接口DiscussRepository。

4.編寫單元測試進行接口方法測試。將Chapter03ApplcationTests測試類在當(dāng)前位置復(fù)制一份并重命名為JpaTests,用來編寫JPA相關(guān)的單元測試,并對內(nèi)容稍微修改后編寫DiscussRepository接口對應(yīng)的測試方法。

測試方法中分別使用了JpaRepository默認(rèn)方法、方法名關(guān)鍵字、@Query注解和Example封裝參數(shù)的形式進行了數(shù)據(jù)操作。

5.整合測試。選擇JpaTests測試類中單元測試方法進行效果的演示。

以上就是SpringBoot中整合JPA框架的過程,你學(xué)會了嗎?如果還有其他疑問,可以在評論區(qū)留言哦。關(guān)注「袁庭新」,干貨天天都不斷。


JPA教程 | 袁庭新老師帶你快速入門Spring Boot整合JPA一文搞定的評論 (共 條)

分享到微博請遵守國家法律
黄平县| 赤峰市| 焦作市| 佛坪县| 岳池县| 秦皇岛市| 南木林县| 谢通门县| 娄烦县| 西宁市| 沂水县| 蒙城县| 湘阴县| 博湖县| 白河县| 临夏县| 黑河市| 洛隆县| 清流县| 连云港市| 东台市| 新安县| 建瓯市| 桃园市| 财经| 禹州市| 靖江市| 南宫市| 逊克县| 梧州市| 滁州市| 甘谷县| 清苑县| 宁明县| 开江县| 保德县| 郴州市| 孟津县| 元氏县| 应城市| 桓台县|