SPA アプリそろそろ作って見たいんじゃい(2)
次に DB 接続と Migration してみる。
SpringBoot では公式に Flyway 書いてあるので、そっちを使う。
build.gradle
にcompile("org.flywaydb:flyway-core")
追加。application.properties
に下記を記載
spring.datasource.url=jdbc:h2:./db/example;MODE=MySQL spring.jpa.hibernate.ddl-auto=validate flyway.locations=db/migration flyway.schemas=PUBLIC
src/main/resources
配下にdb/migration
ディレクトリを作って、SQL ツッコミ
注意点は、flyway はスキーマバージョン管理テーブルを作るのに、デフォルトスキーマ「PUBLIC」にアクセスするべき所を、小文字で「public」アクセスしようとして失敗する∑(゚Д゚)
-- see: http://qiita.com/niwashun/items/dc71dfba4cbb9e9eef98 CREATE SCHEMA IF NOT EXISTS "public"; CREATE TABLE `accounts` ( `id` BIGINT AUTO_INCREMENT NOT NULL PRIMARY KEY, `name` VARCHAR(255) NOT NULL, `password` VARCHAR(127) NOT NULL ); -- account and password. INSERT INTO `accounts` (`name`, `password`) VALUES ('account', '8RSglSZ8nqBtmR07hEM3E0Hdslo=');
ここまで来たら、あとは Entity とか作るだけ。
package net.white_azalea.todo_demo.repositories import javax.persistence.Entity import javax.persistence.GeneratedValue import javax.persistence.Id @Entity(name = "accounts") data class Account( @Id @GeneratedValue val id: Long, val name: String, val password: String ) { /** * for Spring Data JPA */ constructor() : this(0, "", "") { // Nothing to do. } }
package net.white_azalea.todo_demo.repositories import org.springframework.data.jpa.repository.JpaRepository import java.util.* interface AccountRepository : JpaRepository<Account, Long> { fun findOneByName(name: String): Optional<Account> }