1. 概述
Spring Boot 允許我們導入樣例文本到我們的數據庫——主要用於準備集成測試的數據。 默認情況下,有以下兩種可能性。 我們可以使用 import.sql (Hibernate 支持) 或 data.sql (Spring JDBC 支持) 文件來加載數據。
然而,有時我們希望將一個大型 SQL 文件分割成幾個較小的文件,例如為了提高可讀性或與模塊之間共享一些初始化數據。
在本教程中,我們將演示如何使用 Hibernate 和 Spring JDBC 完成此操作。
2. Hibernate 支持
我們可以定義包含樣負載載文件以及spring.jpa.properties.hibernate.hbm2ddl.import_files屬性的配置文件。該屬性可在測試資源文件夾內的 application.properties 文件中進行設置。
這適用於我們僅為 JUnit 測試加載樣負載載數據的情況。該值必須是一個以逗號分隔的文件列表。
spring.jpa.properties.hibernate.hbm2ddl.import_files=import_active_users.sql,import_inactive_users.sql此配置將從兩個文件中加載示例數據:import_active_users.sql 和 import_inactive_users.sql。 需要在此處説明的是,我們必須使用前綴 spring.jpa.properties 來傳遞值(JPA配置)到 EntityManagerFactory。
接下來,我們將演示如何使用 Spring JDBC 支持完成此操作。
3. Spring JDBC 支持
用於初始數據配置和 Spring JDBC 支持 的配置與 Hibernate 非常相似。 我們需要使用 spring.sql.init.data-locations 屬性:
spring.sql.init.data-locations=import_active_users.sql,import_inactive_users.sql將值設置為如上所述,會產生與Hibernate支持相同的結果。然而,該解決方案的主要優勢在於可以使用 Ant 風格模式定義值:
spring.sql.init.data-locations=import_*_users.sql
以上值指示 Spring 搜索所有名稱匹配 import_*_users.sql 模式的文件,並導入其中包含的數據。
此屬性在 Spring Boot 2.5.0 版本中引入;在 Spring Boot 的早期版本中,我們需要使用 spring.datasource.data 屬性。
4. 結論
在本文中,我們演示瞭如何配置 Spring Boot 應用程序以從自定義 SQL 文件加載初始數據。
最後,我們展示了兩種可能性——Hibernate 和 Spring JDBC。它們都運行良好,最終的選擇取決於開發人員。