哈囉大家好,我是古古。
在前面的文章中,我們介紹了 Spring MVC 中的許多特性,因此大家現在就可以在 Spring Boot 中,透過 Spring MVC 和前端進行溝通了。
而在了解了如何和前端溝通之後,在接下來的文章中,我們就會來介紹另一個也很重要的部分,即是如何透過 Spring JDBC,去和「資料庫」進行溝通,所以我們就開始吧!
在前面的文章中我們曾經提到,在現今的網站架構中,前端是負責進行排版設計,後端則是負責數據處理。而前端除了設計網頁的排版之外,同時也需要去問後端:「這裡應該要呈現哪些商品?」,這樣前端才能夠將數據和排版結合再一起,最後再將結果呈現給使用者看。
也因為如此,所以在上一個 Spring MVC 的部分中,我們就都是在介紹:要如何透過 Spring MVC 去和「前端」溝通。
但是這些商品的數據,我們總是得在後端程式中找個地方來儲存,因此後端通常就會將這些商品數據,存放在「資料庫」裡面。 所以後續當前端來詢問:「這裡要呈現哪些商品?」時,後端就可以從資料庫中查詢商品數據,接著再將這些商品的數據返回給前端。
所以在接下來的 Spring JDBC 的部分中,我們就是要來介紹,要如何透過 Spring JDBC,去和「資料庫」溝通,進而存取資料庫中的數據。
大概了解了 Spring JDBC 的用途之後,接著我們可以回頭來看一下 Spring JDBC 的定義。
Spring JDBC 的用途,就是「讓我們能夠在 Spring Boot 中執行 SQL 語法,進而去存取資料庫中的數據」,因此我們之後就可以透過 Spring JDBC 的功能,在 Spring Boot 中執行資料庫的 SQL 語法,所以就可以透過這些 SQL,在資料庫中執行查詢數據、新增數據…等等的操作了!
補充:因此在閱讀後續的文章時,建議大家一定要預先了解資料庫的 SQL 語法,這樣子才會比較好上手。
在上面的那張圖中,大家可能有發現在上方的紅字中,不僅出現了「Spring JDBC」的文字,也出現了「Spring Data JPA」的文字(如下圖黃底處所示)。
其實「在 Spring Boot 中操作資料庫數據」這件事,是有許多工具可以選擇的!
像是在 Spring Boot 中,常見的操作資料庫的工具有:
而在這些操作資料庫的工具中,又可以將他們分成兩類:
在 Spring Boot 中執行 SQL 語法,使用 SQL 語法操作資料庫
這一類的工具,就是直接在 Spring Boot 中執行原始的 SQL 語法,然後透過這些 SQL 語法去新增或是修改資料庫中的數據。Spring JDBC 和 MyBatis 都屬於這一類。
使用 ORM 的概念操作資料庫
這一類的工具,則是會透過 ORM(Object Relational Mapping)的概念,在 Spring Boot 操作資料庫。因此在使用這類的工具時,基本上就很少寫 SQL 語法了,反而是會使用 ORM 的概念,去存取資料庫的數據。Spring Data JPA 和 Hibernate 都屬於這一類。
所以回到最一開始的問題:「Spring JDBC 和 Spring Data JPA 的差別在哪裡?」的話,簡單來說,Spring JDBC 是透過執行 SQL 語法去操作資料庫,而 Spring Data JPA 則是透過 ORM 的概念去操作資料庫。
也因為這兩種概念差異比較大,因此在此系列文中只會介紹 Spring JDBC 的部分,而不會介紹 Spring Data JPA 的用法。如果大家後續對 Spring Data JPA 有興趣,也可以再上網查詢相關的資料。
其實在前面的 Day 22 - RESTful API 實作 - @GetMapping、@PostMapping… 文章中,我們曾經短暫的提到過 CRUD 這個關鍵字,不過當時我們沒有針對 CRUD 進行太多的介紹,因此這裡我們可以正式的來介紹一下,CRUD 所代表的含義是什麼。
CRUD 所代表的,是資料庫中的「Create(新增)、Read(查詢)、Update(修改)、Delete(刪除)」這四個操作的統稱,用來表示資料庫中最基礎的行為。
而這四個操作之所以會簡稱為 CRUD,是因為如果我們把這四個操作擺成直排來看的話,就會發現 CRUD 這個單字,只是各取他們的第一個英文字母來簡稱而已。
之所以說 CRUD 是資料庫中最基礎的實作,是因為不管我們想要實作什麼功能(ex: 商品功能),我們通常都得去實作數據的「新增、查詢、修改、刪除」這四個操作,因此實作 CRUD 可以說是後端工程師必備的基礎能力!建議大家一定要好好掌握才行。
這篇文章我們先回顧了前端和後端之間的區別,接著也介紹了 Spring JDBC 的用途是什麼,以及補充 Spring JDBC 和 Spring Data JPA 的差異在哪裡,讓大家先對 Spring JDBC 有一個簡單的認識。
那麼下一篇文章,我們就會接著來介紹,要如何透過 Spring JDBC 的功能,在 Spring Boot 中設定資料庫的連線資訊,那我們就下一篇文章見啦!
補充:本文是擷取自我開設的線上課程 Java 工程師必備!Spring Boot 零基礎入門 的內容,如果你想了解更多的 Spring Boot 的用法,歡迎參考課程簡介 (輸入折扣碼「HH202504KU」即可享 85 折優惠)。