1. 程式人生 > >中文程式碼之Spring Boot整合H2記憶體資料庫 2018-08-20

中文程式碼之Spring Boot整合H2記憶體資料庫 2018-08-20

續前文: 中文程式碼之Spring Boot新增基本日誌, 原始碼庫地址相同.

鑑於此專案中的資料總量不大(即使萬條詞條也在1MB之內), 當前選擇輕量級而且配置簡單易於部署的H2記憶體資料庫比較合理. 此文僅演示實現H2的整合, 還未修改服務本身功能.

相關commit在: 整合H2資料庫 · program-in-chinese/[email protected]

應用.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):
2018-08-20-h2_connect_spring_boot
可以看到啟動時新增的兩個詞條資料已在資料庫中:
2018-08-20-h2_integration_with_spring_boot
下面需要修改資料庫設計, 使其包括"英文"和"中文"兩個列, 並實現H2資料庫查詢, 代替現在程式碼中的Map結構. 另外, 欠了的測試要還.

參考:

Using H2 In-memory Database with Spring Boot

Setting up H2 with Spring Boot