入門
啟動工作環境的一個簡單方法是在 Spring Tools 中或從 Spring Initializr 建立一個基於 Spring 的專案。
首先,您需要設定一個正在執行的資料庫伺服器。請參閱您的供應商文件,瞭解如何配置資料庫以進行 JDBC 訪問。
要求
Spring Data JDBC 需要 Spring Framework 6.2.6 及以上版本。
在資料庫方面,Spring Data JDBC 需要一個 方言(dialect) 來抽象特定於供應商的 SQL 功能。Spring Data JDBC 直接支援以下資料庫:
-
DB2
-
H2
-
HSQLDB
-
MariaDB
-
Microsoft SQL Server
-
MySQL
-
Oracle
-
Postgres
如果您使用不同的資料庫,您的應用程式將無法啟動。 方言(dialect) 部分包含有關在這種情況下如何繼續操作的更多詳細資訊。
Hello World
在 STS 中建立一個 Spring 專案
-
轉到 File → New → Spring Template Project → Simple Spring Utility Project,並在提示時按 Yes。然後輸入一個專案和包名,例如
org.spring.jdbc.example
。 -
將以下內容新增到
pom.xml
檔案的dependencies
元素中<dependencies> <!-- other dependency elements omitted --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jdbc</artifactId> <version>3.4.5</version> </dependency> </dependencies>
-
更改 pom.xml 中的 Spring 版本為
<spring.version>6.2.6</spring.version>
-
將 Spring Milestone Maven 倉庫的以下位置新增到您的
pom.xml
中,使其與您的<dependencies/>
元素處於同一級別<repositories> <repository> <id>spring-milestone</id> <name>Spring Maven MILESTONE Repository</name> <url>https://repo.spring.io/milestone</url> </repository> </repositories>
該倉庫也可以在此處瀏覽。
日誌
Spring Data JDBC 本身很少或根本不進行日誌記錄。相反,JdbcTemplate
發出 SQL 語句的機制提供了日誌記錄。因此,如果您想檢查運行了哪些 SQL 語句,請為 Spring 的 NamedParameterJdbcTemplate
或 MyBatis 啟用日誌記錄。
您可能還需要將日誌級別設定為 DEBUG
以檢視一些額外資訊。為此,編輯 application.properties
檔案,使其包含以下內容:
logging.level.org.springframework.jdbc=DEBUG
示例倉庫
有一個包含多個示例的 GitHub 倉庫,您可以下載並試用,以瞭解該庫的工作原理。
配置
Spring Data JDBC 倉庫支援可以透過 Java 配置中的註解來啟用,如下例所示:
@Configuration
@EnableJdbcRepositories (1)
class ApplicationConfig extends AbstractJdbcConfiguration { (2)
@Bean
DataSource dataSource() { (3)
EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
return builder.setType(EmbeddedDatabaseType.HSQL).build();
}
@Bean
NamedParameterJdbcOperations namedParameterJdbcOperations(DataSource dataSource) { (4)
return new NamedParameterJdbcTemplate(dataSource);
}
@Bean
TransactionManager transactionManager(DataSource dataSource) { (5)
return new DataSourceTransactionManager(dataSource);
}
}
1 | @EnableJdbcRepositories 為派生自 Repository 的介面建立實現 |
2 | AbstractJdbcConfiguration 提供了 Spring Data JDBC 所需的各種預設 Bean |
3 | 建立一個連線到資料庫的 DataSource 。這是以下兩個 Bean 方法所必需的。 |
4 | 建立 Spring Data JDBC 用於訪問資料庫的 NamedParameterJdbcOperations 。 |
5 | Spring Data JDBC 利用 Spring JDBC 提供的事務管理。 |
上例中的配置類透過使用 spring-jdbc
的 EmbeddedDatabaseBuilder
API 設定了一個嵌入式 HSQL 資料庫。然後使用 DataSource
設定 NamedParameterJdbcOperations
和 TransactionManager
。我們最後透過使用 @EnableJdbcRepositories
啟用 Spring Data JDBC 倉庫。如果沒有配置基本包,它會使用配置類所在的包。繼承 AbstractJdbcConfiguration
確保各種 Bean 被註冊。覆蓋其方法可用於自定義設定(見下文)。
使用 Spring Boot 可以進一步簡化此配置。使用 Spring Boot,一旦依賴中包含 starter spring-boot-starter-data-jdbc
,一個 DataSource
就足夠了。其餘的一切都由 Spring Boot 完成。
在此設定中,有一些方面可能需要自定義。
方言
Spring Data JDBC 使用 Dialect
介面的實現來封裝特定於資料庫或其 JDBC 驅動程式的行為。預設情況下,AbstractJdbcConfiguration
嘗試透過獲取連線和註冊正確的 Dialect
來從資料庫配置中確定方言。您可以覆蓋 AbstractJdbcConfiguration.jdbcDialect(NamedParameterJdbcOperations)
來自定義方言選擇。
如果您使用的資料庫沒有可用的方言,您的應用程式將無法啟動。在這種情況下,您將不得不要求您的供應商提供 Dialect
實現。或者,您可以實現自己的 Dialect
。
方言由
|