知識庫 / Spring / Spring Boot RSS 訂閱

Spring Boot 與 HSQLDB 集成

Spring Boot,Spring Data
HongKong
10
01:35 PM · Dec 06 ,2025

1. 概述

Spring Boot 使您能夠輕鬆地與不同的數據庫系統進行交互,而無需手動管理依賴項的麻煩。

更具體地説,Spring Data JPA starter 提供所有用於與多個 DataSource 實現的無縫集成的功能。

在本教程中, 我們將學習如何將 Spring Boot 與 HSQLDB 集成。

2. Maven 依賴項

為了演示如何輕鬆地將 Spring Boot 與 HSQLDB 集成,我們將創建一個簡單的 JPA 存儲庫層,該層使用內存中的 HSQLDB 數據庫對客户實體執行 CRUD 操作.

以下是我們將用於啓動示例存儲庫層的 Spring Boot 啓動器:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    <version>3.0.5.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.hsqldb</groupId>
    <artifactId>hsqldb</artifactId>
    <version>2.7.1</version>
    <scope>runtime</scope>
</dependency>

請注意,我們還包含了 HSQLDB 依賴。如果沒有它,Spring Boot 將嘗試自動配置一個 DataSource 類型的 Bean 和一個通過 HikariCP 實現的 JDBC 連接池。

因此,如果我們沒有在 pom.xml 文件中指定一個有效的 DataSource 依賴,則構建將會失敗

此外,請務必檢查 Maven Central 上最新版本的 spring-boot-starter-data-jpa

3. 連接到 HSQLDB 數據庫

為了練習我們的演示倉庫層,我們將使用內存數據庫。但是,也可以使用基於文件的數據庫進行操作。我們將在此下文的各個部分探索這些方法。

3.1. 運行外部HSQLDB服務器

讓我們看看如何運行外部HSQLDB服務器並創建基於文件的數據庫。安裝HSQLDB和運行服務器非常簡單。

以下是應該遵循的步驟:

  • 首先,我們將下載HSQLDB並將其解壓縮到文件夾中
  • 由於HSQLDB沒有提供默認數據庫,我們將創建一個名為“testdb”的數據庫,僅供示例使用
  • 我們將啓動命令提示符並導航到HSQLDB的“data”文件夾
  • “data”文件夾中,我們將運行以下命令:
  • java -cp ../lib/hsqldb.jar org.hsqldb.server.Server --database.0 file.testdb --dbname0.testdb
  • 上述命令將啓動HSQLDB服務器並創建我們的數據庫,其源文件將存儲在data 文件夾中
  • 我們可以通過前往data 文件夾來確保數據庫已成功創建,該文件夾應包含名為“testdb.lck”“testdb.log”“testdb.properties”“testdb.script” 的文件集(文件數量取決於我們創建的數據庫類型)
  • 一旦數據庫設置完成,我們還需要連接到它。
  • 要做到這一點,在 Windows 上,請前往數據庫的 bin 文件夾,並運行 runManagerSwing.bat 文件。這將打開 HSQLDB 數據庫管理器的初始屏幕,其中我們可以輸入連接憑據:
  • 類型: HSQL 數據庫引擎
  • URL: jdbc:hsqldb:hsql://localhost/testdb
  • 用户: “SA”(系統管理員)
  • 密碼: 請留空該字段
  • 在 Linux/Unix/Mac 上,我們可以使用 NetBeans、Eclipse 或 IntelliJ IDEA 通過 IDE 的可視化工具創建數據庫連接,使用相同的憑據。
  • 在這些工具中,通過在數據庫管理器的 SQL 腳本中執行或在 IDE 中執行來創建數據庫表非常簡單。
  • 連接後,我們可以創建一個 customers 表:
  • CREATE TABLE customers (
       id INT  NOT NULL,
       name VARCHAR (45),
       email VARCHAR (45),      
       PRIMARY KEY (ID)
    ); 
    

    只需幾個簡單的步驟,我們已經創建了一個基於文件的HSQLDB數據庫,其中包含一個客户表。

    3.2. application.properties 文件

    如果我們要連接到 Spring Boot 之前的基於文件的數據存儲庫,以下是在 <em application.properties</em> 文件中應包含的設置:

    spring.datasource.driver-class-name=org.hsqldb.jdbc.JDBCDriver 
    spring.datasource.url=jdbc:hsqldb:hsql://localhost/testdb 
    spring.datasource.username=sa 
    spring.datasource.password= 
    spring.jpa.hibernate.ddl-auto=update
    

    如果使用內存數據庫,我們應該使用以下這些:

    spring.datasource.driver-class-name=org.hsqldb.jdbc.JDBCDriver
    spring.datasource.url=jdbc:hsqldb:mem:testdb;DB_CLOSE_DELAY=-1
    spring.datasource.username=sa
    spring.datasource.password=
    spring.jpa.hibernate.ddl-auto=create
    

    請注意在數據庫 URL 的末尾添加的 DB_CLOSE_DELAY=-1 參數。當使用內存數據庫時,我們需要指定此參數,以便 JPA 實現(即 Hibernate)在應用程序運行時不會關閉數據庫

    4. 客户實體

    配置數據庫連接設置後,接下來我們需要定義我們的 客户 實體:

    @Entity
    @Table(name = "customers")
    public class Customer {
        
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private long id;
        
        private String name;
        
        private String email;
    
        // standard constructors / setters / getters / toString
    }
    

    5. 倉庫

    此外,我們需要實現一個薄的持久化層,這允許我們在我們的 JPA 實體上擁有基本的 CRUD 功能。

    我們可以通過簡單地擴展 CrudRepository 接口來實現這個層:

    @Repository
    public interface CustomerRepository extends CrudRepository<Customer, Long> {}

    6. 測試 客户存儲庫

    最後,我們應該確保 Spring Boot 能夠實際連接到 HSQLDB。我們可以通過簡單地測試存儲庫層來輕鬆實現這一點。

    讓我們開始測試存儲庫的 findById()findAll() 方法:

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class CustomerRepositoryTest {
        
        @Autowired
        private CustomerRepository customerRepository;
        
        @Test
        public void whenFindingCustomerById_thenCorrect() {
            customerRepository.save(new Customer("John", "[email protected]"));
            assertThat(customerRepository.findById(1L)).isInstanceOf(Optional.class);
        }
        
        @Test
        public void whenFindingAllCustomers_thenCorrect() {
            customerRepository.save(new Customer("John", "[email protected]"));
            customerRepository.save(new Customer("Julie", "[email protected]"));
            assertThat(customerRepository.findAll()).isInstanceOf(List.class);
        }
    }
    

    最後,讓我們測試 save() 方法:

    @Test
    public void whenSavingCustomer_thenCorrect() {
        customerRepository.save(new Customer("Bob", "[email protected]"));
        Customer customer = customerRepository.findById(1L).orElseGet(() 
          -> new Customer("john", "[email protected]"));
        assertThat(customer.getName()).isEqualTo("Bob");
    }

    7. 結論

    在本文中,我們學習瞭如何將 Spring Boot 集成到 HSQLDB 中,以及如何在開發一個基本 JPA 存儲庫層時,使用基於文件或內存數據庫。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.