科技新知

快速下戴模版

使用Spring initializr,可以很容易就建立一個以Spring boot starter為底的java project。大家可以使用Spring 官網又或是vscode plugin 快速地建立一個maven或gradle project。筆者較為熟悉maven,就以maven起一個範例。

在使用Spring initializr有幾件事必需要指定的:

  • Spring boot version: 3.x.y 或以上
  • Language: java
  • Group Id: 請選擇有意思的域名,如果你用github,可以選 io.github.yourusername
  • artifactId: 這個範例的名字,例如commandline
  • Packaging type: 本次使用jar,日後若開發web 應用,可以使用war
  • Java version: 17或以上
  • Dependency: Spring Data JPA, Spring Boot DevTools

這次不像過去順利,因為這裏欠缺了Database連線資料,為了方便測試,我們先在pom.xml加入

h2與spring的整合很好。即使用什麼都不設定,直接運行mvn spring-boot:run,都可以成功執行了。但如果可以,在application.properties加入資料庫設定,會方便日後移植到其他常用的資料庫品版牌。

# src/main/resources/application.properties
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:testdb;
spring.datasource.usename=random
spring.datasource.password=random
 

然後我們就可以做靠Spring Data JPA去生資料庫的表 (table)。Spring Data JPA預設使用的是Hibernate。假設,我們有一個表叫APPLE。我們就可以開一個class Apple和一個interface AppleRepo去接它。

// src/main/java/io/github/macauyeah/spring/tutorial/springbootdatabasic/Apple.java@EntitypublicclassApple {
    @IdStringuuid;
    Doubleweight;
	// getter setter
}

// src/main/java/io/github/macauyeah/spring/tutorial/springbootdatabasic/AppleRepo.javapublicinterfaceAppleRepoextendsJpaRepository<Apple, String>{
    // no content here
}
 

注意,因為不同需要,AppleRepo可能繼承不同的XXXRepository,它們大部份都是用來觸發寫入資料庫的指令。而這個也晚除了直接存取Hibnerate EntityManager的需要。

亦因為我們現在用的是h2Database,其實資料表並不存在。我們需要在執行Spring Boot時,同步先建立表,所以在application.properties 加入自動建表的設定。

# src/main/resources/application.properties
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update
 

然後在Spring Boot Context的環境下,可以隨時執行寫入的操作。

@AutowiredprivateAppleRepoappleRepo;

	publicvoidsaveApple() {
		Appleapple = newApple();
		apple.setUuid(UUID.randomUUID().toString());
		apple.setWeight(100.0);
		appleRepo.save(apple);
	}
 

Source Code

spring boot data basic

因為h2Database只是用作測試用,所以spring-boot執行完,資料庫就會被刪除。而上述原始碼當中,還附上了一些dump sql的方法,至少可以讓大家驗證己儲存的結果。

馬交野