入門
作業環境をブートストラップ設定する簡単な方法は、Pleiades All in One (JDK, STS, Lombok 付属) 、Spring Tools (英語) または Spring Initializr から Spring ベースのプロジェクトを作成することです。
まず、実行中のデータベースサーバーをセットアップする必要があります。JDBC アクセス用にデータベースを構成する方法については、ベンダーのドキュメントを参照してください。
要件
Spring Data JDBC には Spring Framework 6.2.1 以降が必要です。
データベースに関しては、Spring Data JDBC には、ベンダー固有のフレーバーよりも一般的な SQL 機能を抽象化するためのダイアレクトが必要です。Spring Data JDBC は、以下のデータベースを直接サポートしています。
DB2
H2
HSQLDB
MariaDB
Microsoft SQL Server
MySQL
Oracle
Postgres
別のデータベースを使用すると、アプリケーションは起動しません。このような場合の対処方法については、ダイアレクトのセクションに詳しく記載されています。
Hello World
STS で Spring プロジェクトを作成するには:
ファイル→新規→ Spring テンプレートプロジェクト→シンプル Spring ユーティリティプロジェクトに移動し、プロンプトが表示されたらはいを押します。次に、プロジェクトとパッケージ名(
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.1</version> </dependency> </dependencies>
pom.xml の Spring のバージョンを次のように変更します
<spring.version>6.2.1</spring.version>
Maven の Spring マイルストーンリポジトリの次の場所を、
<dependencies/>
要素と同じレベルになるようにpom.xml
に追加します。<repositories> <repository> <id>spring-milestone</id> <name>Spring Maven MILESTONE Repository</name> <url>https://repo.spring.io/milestone</url> </repository> </repositories>
リポジトリも参照できます (英語) 。
ログ
Spring Data JDBC は、それ自体ではほとんどまたはまったくロギングを行いません。代わりに、SQL ステートメントを発行する JdbcTemplate
のメカニズムにより、ログが提供されます。実行されている 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 (Javadoc) は Spring Data JDBC に必要なさまざまなデフォルト Bean を提供します |
3 | データベースに接続する DataSource を作成します。これは、次の 2 つの 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
(Javadoc) を拡張すると、さまざまな Bean が登録されます。そのメソッドを上書きすると、セットアップをカスタマイズできます (以下を参照)。
この構成は、Spring Boot を使用してさらに簡略化できます。Spring Boot では、スターター spring-boot-starter-data-jdbc
が依存関係に含まれていれば、DataSource
で十分です。他のすべては Spring Boot によって行われます。
このセットアップでカスタマイズしたいことがいくつかあります。
ダイアレクト
Spring Data JDBC は、インターフェース Dialect
の実装を使用して、データベースまたはその JDBC ドライバーに固有の動作をカプセル化します。デフォルトでは、AbstractJdbcConfiguration
(Javadoc) は接続を取得し、正しい Dialect
を登録することで、データベース構成からダイアレクトを判別しようとします。ダイアレクトの選択をカスタマイズするには、AbstractJdbcConfiguration.jdbcDialect(NamedParameterJdbcOperations)
をオーバーライドします。
使用可能なダイアレクトがないデータベースを使用すると、アプリケーションは起動しません。その場合、ベンダーに Dialect
実装の提供を依頼する必要があります。あるいは、独自の Dialect
を実装することもできます。
ダイアレクトは、通常、
|