春だから Spring やろうぜ(その 7)
Gradle を使ってみる
前回作ったものを
- ビルドツールとして Maven ではなく Gradle を使ってみる
- データベースは PostgreSQL を使ってみる
で作り直してみる。
プラグインのインストール
Gradle によるビルドを行うためには STS にプラグインを入れる必要がある。
http://download.eclipse.org/buildship/updates/e47/releases/2.x
からプラグインをインストール。
スタータープロジェクトの作成
スクリーンショットではプロジェクト名が「SpringWebApp-1」になっているが、実際は「SpringWebApp」で作っています。
ちゃっかり Java 9 にしておいた。そしていつの間にか Spring Boot が 2.0.1 になってる ?
build.gradle はこんな感じになってた。
buildscript { ext { springBootVersion = '2.0.1.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' group = 'jp.mydns.akanekodou' version = '0.0.1-SNAPSHOT' sourceCompatibility = 9 repositories { mavenCentral() } dependencies { compile('org.springframework.boot:spring-boot-starter-data-jpa') compile('org.springframework.boot:spring-boot-starter-thymeleaf') compile('org.springframework.boot:spring-boot-starter-web') runtime('org.springframework.boot:spring-boot-devtools') runtime('org.postgresql:postgresql') compileOnly('org.projectlombok:lombok') testCompile('org.springframework.boot:spring-boot-starter-test') }
build.gradle の正体は Groovy のコードらしい。ちなみに Gradle の中に Groovy が内包されているので別途 Groovy をインストールする必要はない(内包された Groovy が単体で使えるわけではない)。
初 Gradle だけど読むと何となく何をやってるのかはわかった。
データベースの準備
データベース名 | spring |
---|---|
ユーザー名 | sa |
パスワード | sa |
create table my_data_entity ( id integer primary key, name varchar(20), mail varchar(20) ); insert into my_data_entity values (1, 'tuyano', 'syoda@tuyano'), (2, 'hanako', 'hanako@flower'), (3, 'sachiko', 'sachiko@happy'), (4, 'taro', 'taro@yamada');
application.properties を編集する。
spring.datasource.url=jdbc:postgresql://localhost:5432/spring spring.datasource.username=sa spring.datasource.password=sa spring.datasource.driver-class-name=org.postgresql.Driver
PostgreSQL を使う場合、別途 hibernate.properties を作成して以下の内容を入れておけば良いようである。PostgreSQL に CLOB 型がないために発生する例外を出なくするものだそうだ(実際のところ例外が出ても無視できるのだが、エラーメッセージがウザいので)。
hibernate.jdbc.lob.non_contextual_creation = true
他のコードは基本的に同じだが、初期データは SQL 文で投入してしまっているので SpringWebAppApplication.java (プロジェクト作成時に自動生成されている Java コード)はいじらない。
出力結果としては変わらないんだけど、実際の値をちゃんとデータベースから引っ張ってきているので、何となくこっちの方がデータベースにアクセスしてる感はある。