似非プログラマのうんちく

「似非プログラマの覚え書き」出張版

春だから Spring やろうぜ(その 7)

Gradle を使ってみる

前回作ったものを

  • ビルドツールとして Maven ではなく Gradle を使ってみる
  • データベースは PostgreSQL を使ってみる

で作り直してみる。

プラグインのインストール

Gradle によるビルドを行うためには STSプラグインを入れる必要がある。

http://download.eclipse.org/buildship/updates/e47/releases/2.x

からプラグインをインストール。

スタータープロジェクトの作成

スクリーンショットではプロジェクト名が「SpringWebApp-1」になっているが、実際は「SpringWebApp」で作っています。

f:id:redcat_prog:20180415131217p:plain

f:id:redcat_prog:20180415131218p:plain

ちゃっかり 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 コード)はいじらない。

出力結果としては変わらないんだけど、実際の値をちゃんとデータベースから引っ張ってきているので、何となくこっちの方がデータベースにアクセスしてる感はある。