iT邦幫忙

2024 iThome 鐵人賽

DAY 7
0
Software Development

Spring boot 從零到寫出ChatGPT系列 第 7

Spring boot 從零開始 (7) - Spring boot 搭配H2 Database

  • 分享至 

  • xImage
  •  

Hello ~ 延續昨天的分享,今天最重要的目標就是讓我們來連接資料庫吧 !

先簡單跟大家介紹為甚麼我們選用H2當第一個Database ?

H2 Database

H2 是一個輕量型的資料庫,它可以被嵌入Java應用程式中使用,或者作為一個單獨的資料庫伺服器執行。而預設是採用記憶體的方式做資料儲存,速度非常快,但有個風險是資料都存放在內存,所以在伺服器重開或故障有機會發生資料遺失的風險。

Spring boot加入H2 Database的配置

  1. pom.xml加入以下dependency
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
  1. 若有修改檔案,可以立刻重新啟動應用
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>
  1. application.properties新增DB連線資訊
spring.h2.console.enabled=true
spring.datasource.url=jdbc:h2:~/test
spring.datasource.driver-class-name=org.h2.Driver
# H2帳密的預設值
spring.datasource.username=sa
spring.datasource.password=
# 主要是可以直接啟動H2 console的url設定
spring.h2.console.path=/h2-console

依照上面的步驟設定完畢之後,我們就可以嘗試重新啟動application了 ~~~
將應用啟動後,進入http://localhost:8080/h2-console/
可以看見一個 h2 DB 的操作介面 👇👇👇
https://ithelp.ithome.com.tw/upload/images/20240921/20112118YOcuMeg4xT.png
接著點Connect就可以查看資料庫了喔 👇
https://ithelp.ithome.com.tw/upload/images/20240921/201121182RUdiMAiyD.png

那接著下來我們就來實現真正的範例吧!!!

先明確定義出我們的資料夾結構

依照三層式結構,我們預期會有這四個資料庫 (雖然前面有提過,但我們再複習一次

|-- src
    |-- main
        |-- java
             |-- com.xxx.xxxxx
                  |-- controller
                  |-- service
                  |-- model
                  |-- repo

創建一個Model

我們以圖書目錄為範例,所以接著model folder下面建立一個 Book.java
https://ithelp.ithome.com.tw/upload/images/20240921/20112118BMLuA92ePi.png

這邊我們先介紹

@Entity 宣告此類是一個實體,並映射至一個數據表,Entity名稱預設為class名稱。

@Table Table的名稱,預設為Entity名稱。

@Id 則是資料表的主鍵(Primary Key)

@GeneratedValue 主鍵產生的策略

@Column 則是對應到資料庫的欄位,如果宣告的名字跟欄位名不一樣的時候,我們可以特別給他name去定義

範例 :

/*這樣就代表真正的資料庫裏面欄位是bookName,但我們自己在定義這個實體的時候為name這個變數 */
    @Column(name = "bookName")
    private String name;

其他annotation,我們可以參考官方說明

明天我們接著寫出第一個完整的三層式架構範例吧 !!!

參考來源


上一篇
Spring boot 從零開始 (6) - Spring boot 三層式架構 & 認識Controller和Service
下一篇
Spring boot 從零開始 (8) - 完成一個三層式架構範例吧 !
系列文
Spring boot 從零到寫出ChatGPT30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言