混日子就是虐待自己 ,這比死亡更可怕 --《Doctors》
這次的實作使用H2 Database,H2 是一個由 Java 撰寫的關聯型資料庫,也是一個記憶體資料庫(In memory database),將內容存放在記憶體(內存)當中,而非傳統型資料庫存放在外部記憶體中。
這樣的資料庫設計是為了消除訪問硬碟來減少響應的時間,但由於資料都存放在內存,所以在伺服器重開或故障時會有資料遺失的風險。
(1)在pom.xml
添加jar package
<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>
熱部署模組,修改檔案後,可以立刻重新啟動應用
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
(2)DB環境基礎設置application.yml
server:
port: 9100 # 伺服器的port號
spring:
h2:
console:
enabled: true
datasource:
url: jdbc:h2:mem:todolist # h2 database 連接位址
driver-class-name: org.h2.Driver # 配置driver
username: sa # database 用戶名
password: # database 密碼
jpa:
database-platform: org.hibernate.dialect.H2Dialect
(3)訪問 h2 資料庫
將應用啟動後,進入http://localhost:9100/h2-console/
,可以看見一個 h2 DB 的操作介面,再點Connect就可以查看資料庫,這樣就成功連接一個名為todolist的資料庫了。
資料庫建立完畢後,我們就可以在main -> java → com.xxx.xxxxx → 底下來建立資料類別-Todo.java
(下方有資料夾結構表)
|-- src
|-- main
|-- java
|-- com.xxx.xxxxx
|-- entity
|-- Todo.java
|-- TodoListApplication.java # 程式進入點
利用@Entity
Annotation Todo class 是一個Entity,@Table
映射其至Todo 表,接著聲明這個表格擁有的欄位,最後我們要定義欄位的getter & setter,按下⌘ + N
(Mac) 或Ctrl + N
(Windows)會跳出選項進行選擇,點擊「Getter and Setter」,會快速幫我們生成setter and getter的方法。
import javax.persistence.*;
@Entity
@Table
public class Todo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Integer id;
@Column
String task;
@Column
Integer status;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTask() {
return task;
}
public void setTask(String task) {
this.task = task;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
}
@Entity 宣告此類是一個實體,並映射至一個數據表,Entity名稱預設為class名稱。
@Table 映射資料表的名稱,預設為Entity名稱。
@Id 聲明為一個主鍵
@GeneratedValue(strategy = GenerationType.IDENTITY) 主鍵生成的策略。
@Column 聲明是個欄位,可以針對此欄位設置參數,如name, unique, length等。
一樣進入http://localhost:9100/h2-console/
,Connect 之後可以看到以下畫面,查看表結構。
可以至Java persistence document查看其他Annotation用法
今天實作如何創建資料庫,並讓Entity映射至資料表,明天再來解釋為什麼Entity可以與資料庫對映。