Spring Boot 2系にあげたときにやったことをまとめようと思います。関連記事 今回は、Spring Data JPAの話です。Spring Boot 2.0.9.RELEASEに上げた話になります。2.2対応はまたいつか書きます。
依存しているライブラリのバージョン
Spring Bootのバージョンを1.5.22
から2.0.9
に上げると依存しているライブラリのバージョンが次のようになります。
Spring Boot 1.5.22.RELEASE → Spring Boot 2.0.9.RELEASE
DataSource
コネクションプールの変更
デフォルトのコネクションプールがTomcatからHikariCPになった。
カスタマイズしたDataSourceを利用する際はプロパティに気をつける
コネクションプールにHikariCPを利用してDataSourceをカスタマイズする際、url
でなく、jdbc-url
にする。参考
application.properties
app.datasource.jdbc-url=jdbc:mysql://localhost/test app.datasource.username=dbuser app.datasource.password=dbpass app.datasource.maximum-pool-size=30
@Bean @ConfigurationProperties("app.datasource") public HikariDataSource dataSource() { return DataSourceBuilder.create().type(HikariDataSource.class).build(); }
X-RayでSQLトレースする際はHikariCPは使えない
X-Rayを使ってSQLクエリをトレースする際、org.apache.tomcat.jdbc.pool.JdbcInterceptor
を実装したインターセプタを利用するため、HikariCPを依存関係から除外して、tomcat-jdbcを追加しなければなりません。参考
build.gradle
dependencies { implementation("org.springframework.boot:spring-boot-starter-data-jpa") { exclude group: 'com.zaxxer' } implementation "org.apache.tomcat:tomcat-jdbc" }
pom.xml
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> <exclusions> <exclusion> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jdbc</artifactId> </dependency> </dependencies>
Spring Data
PageRequest.java, Sort.javaのコンストラクタが非推奨になった
コンストラクタが非推奨になって、staticコンストラクタを使用するようになった。
- new PageRequest(1, 10); + PageRequest.of(1, 10);
- new Sort(orders); + Sort.by(orders);
Spring Data JPA
JpaRepository.javaが結構変わった
メソッドの戻り値にOptionalを使えるようになった
- User findByName(String name); + Optional<User> findByName(String name);
メソッド名が変わった
- <S extends T> List<S> save(Iterable<S> entities); + <S extends T> List<S> saveAll(Iterable<S> entities);
などなど