謎言語使いの徒然

適当に気になった技術や言語を流すブログ。

SPA アプリそろそろ作って見たいんじゃい(2)

次に DB 接続と Migration してみる。
SpringBoot では公式に Flyway 書いてあるので、そっちを使う。

  • build.gradlecompile("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>
}