做后期的網(wǎng)站網(wǎng)頁自動點擊軟件
【Spring Boot 3】【JPA】@ManyToOne 實現(xiàn)一對多單向關(guān)聯(lián)
- 背景
- 介紹
- 開發(fā)環(huán)境
- 開發(fā)步驟及源碼
- 工程目錄結(jié)構(gòu)
- 總結(jié)
背景
軟件開發(fā)是一門實踐性科學(xué),對大多數(shù)人來說,學(xué)習(xí)一種新技術(shù)不是一開始就去深究其原理,而是先從做出一個可工作的DEMO入手。但在我個人學(xué)習(xí)和工作經(jīng)歷中,每次學(xué)習(xí)新技術(shù)總是要花費或多或少的時間、檢索不止一篇資料才能得出一個可工作的DEMO,這占用了我大量的時間精力。因此本文旨在通過一篇文章即能還原出可工作的、甚至可用于生產(chǎn)的DEMO,期望初學(xué)者能盡快地邁過0到1的這一步驟,并在此基礎(chǔ)上不斷深化對相關(guān)知識的理解。
為達以上目的,本文會將開發(fā)環(huán)境、工程目錄結(jié)構(gòu)、開發(fā)步驟及源碼盡量全面地展現(xiàn)出來,文字描述能簡則簡,能用代碼注釋的絕不在正文中再啰嗦一遍,正文僅對必要且關(guān)鍵的信息做重點描述。
介紹
《【Spring Boot 3】【JPA】一對多單向關(guān)聯(lián)》 說明了開發(fā)Spring Boot應(yīng)用時如何使用 @OneToMany
注解處理一對多關(guān)聯(lián)關(guān)系,但是因為 @OneToMany
無法控制獲取記錄的數(shù)量,存在內(nèi)存溢出的風(fēng)險,因此日常開發(fā)中多數(shù)情況下會使用 @ManyToOne
注解處理一對多關(guān)聯(lián)關(guān)系。
本文介紹開發(fā)Spring Boot應(yīng)用時如何使用 @ManyToOne
注解處理一對多單向關(guān)聯(lián)關(guān)系,涵蓋 主從雙數(shù)據(jù)表 和 帶有中間關(guān)聯(lián)關(guān)系表的三數(shù)據(jù)表 這兩種存儲關(guān)聯(lián)關(guān)系的實現(xiàn)。
本文定義了公司(Company
)、工程師(Engineer
)、經(jīng)理(Manager
)三個實體,其中公司(Company
)與工程師(Engineer
)、公司(Company
)與經(jīng)理(Manager
)都是一對多單向關(guān)聯(lián),且關(guān)系主控方(即關(guān)系擁有方)都在 多 的一側(cè),即工程師(Engineer
)和經(jīng)理(Manager
)。
開發(fā)環(huán)境
分類 | 名稱 | 版本 |
---|---|---|
操作系統(tǒng) | Windows | Windows 11 |
JDK | Oracle JDK | 21.0.1 |
IDE | IntelliJ IDEA | 2023.2.4 |
構(gòu)建工具 | Apache Maven | 3.9.3 |
數(shù)據(jù)庫 | MySQL | 8.0.33 |
開發(fā)步驟及源碼
1> 創(chuàng)建Maven工程,添加依賴。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.jiyongliang</groupId><artifactId>springboot3-jpa</artifactId><version>0.0.1</version></parent><artifactId>springboot3-jpa-many-to-one</artifactId><properties><java.version>21</java.version><maven.compiler.source>21</maven.compiler.source><maven.compiler.target>21</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><spring-boot.version>3.2.2</spring-boot.version><mysql-connector-j.version>8.3.0</mysql-connector-j.version><flyway.version>10.6.0</flyway.version><lombok.version>1.18.30</lombok.version></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactI