このバージョンはまだ開発中であり、まだ安定しているとは見なされていません。最新の安定バージョンについては、Spring Data Relational 3.5.1 を使用してください! |
入門
作業環境をブートストラップ設定する簡単な方法は、Pleiades All in One (JDK, STS, Lombok 付属) 、Spring Tools (英語) または Spring Initializr から Spring ベースのプロジェクトを作成することです。
まず、実行中のデータベースサーバーをセットアップする必要があります。JDBC アクセス用にデータベースを構成する方法については、ベンダーのドキュメントを参照してください。
要件
Spring Data JDBC には Spring Framework 7.0.0-M5 以降が必要です。
データベースに関しては、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>4.0.0-M3</version> </dependency> </dependencies>
pom.xml の Spring のバージョンを次のように変更します
<spring.version>7.0.0-M5</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
を実装することもできます。
ダイアレクトは、通常、
|