續前文: "中文代碼之Spring Boot添加基本日誌" , 源碼庫地址相同. 鑒於此項目中的數據總量不大(即使萬條詞條也在1MB之內), 當前選擇輕量級而且配置簡單易於部署的H2記憶體資料庫比較合理. 此文僅演示實現H2的集成, 還未修改服務本身功能. 相關commit在: "集成H2資料庫 · ...
續前文: 中文代碼之Spring Boot添加基本日誌, 源碼庫地址相同.
鑒於此項目中的數據總量不大(即使萬條詞條也在1MB之內), 當前選擇輕量級而且配置簡單易於部署的H2記憶體資料庫比較合理. 此文僅演示實現H2的集成, 還未修改服務本身功能.
相關commit在: 集成H2資料庫 · program-in-chinese/programming_term_dictionary@dc29be7
應用.java
public class 應用 implements CommandLineRunner {
private static final Logger 筆錄 = LoggerFactory.getLogger(應用.class);
private final 詞庫介面 詞庫;
@Autowired
public 應用(詞庫介面 詞庫) {
this.詞庫 = 詞庫;
}
...
@Override
public void run(String ...參數) throws Exception {
詞條 詞條1 = new 詞條(1L, "集合");
詞條 詞條2 = new 詞條(2L, "字典");
筆錄.info("添加H2數據");
詞庫.save(詞條1);
詞庫.save(詞條2);
筆錄.info("數據條數: {}", 詞庫.count());
}
詞條.java:
@Entity
public class 詞條 {
@Id
private long id;
private String 中文術語;
public 詞條() {
}
...
}
詞庫介面.java
@Repository
public interface 詞庫介面 extends JpaRepository<詞條, Long> {
}
application.yml
# 打開H2控制台
spring:
h2:
console:
enabled: true
datasource:
url: jdbc:h2:mem:testdb;MODE=Oracle;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
pom.xml添加依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
啟動服務後, 訪問http://localhost:8080/h2-console併在JDBC URL中輸入application.yml中配置的資料庫路徑(datasource:url):
可以看到啟動時添加的兩個詞條數據已在資料庫中:
下麵需要修改資料庫設計, 使其包括"英文"和"中文"兩個列, 並實現H2資料庫查詢, 代替現在代碼中的Map結構. 另外, 欠了的測試要還.
參考:
Using H2 In-memory Database with Spring Boot
Setting up H2 with Spring Boot