このバージョンはまだ開発中であり、まだ安定しているとは見なされていません。最新の安定バージョンについては、Spring Data Relational 4.1.1 を使用してください! |
入門
作業環境をブートストラップ設定する簡単な方法は、Pleiades All in One (JDK, STS, Lombok 付属) 、Spring Tools (英語) または Spring Initializr から Spring ベースのプロジェクトを作成することです。
まず、実行中のデータベースサーバーをセットアップする必要があります。JDBC アクセス用にデータベースを構成する方法については、ベンダーのドキュメントを参照してください。
要件
Spring Data JDBC には Spring Framework 7.1.0-M1 以降が必要です。
データベースに関しては、Spring Data JDBC には、ベンダー固有のフレーバーよりも一般的な SQL 機能を抽象化するためのダイアレクトが必要です。Spring Data JDBC は、以下のデータベースを直接サポートしています。
DB2
H2
HSQLDB
MariaDB
Microsoft SQL Server
MySQL
Oracle
PostgreSQL
別のデータベースを使用すると、アプリケーションは起動しません。このような場合の対処方法については、ダイアレクトのセクションに詳しく記載されています。
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>4.2.0-M1</version> </dependency> </dependencies>pom.xml の Spring のバージョンを次のように変更します
<spring.version>7.1.0-M1</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 は、インターフェース JdbcDialect の実装を使用して、データベースまたはその JDBC ドライバーに固有の動作をカプセル化します。デフォルトでは、AbstractJdbcConfiguration (Javadoc) は接続を取得し、正しい JdbcDialect を登録することで、データベース構成からダイアレクトを判別しようとします。ダイアレクトの選択をカスタマイズするには、AbstractJdbcConfiguration.jdbcDialect(NamedParameterJdbcOperations) をオーバーライドします。
使用可能なダイアレクトがないデータベースを使用すると、アプリケーションは起動しません。その場合、ベンダーに JdbcDialect 実装の提供を依頼する必要があります。あるいは、独自の JdbcDialect を実装することもできます。
ダイアレクトは、通常は
|