Web系開発メモ

Java, C#, HTML, CSS, JavaScript のことなどを書いてます。

SpringBoot アプリ開発 2.プロジェクト作成・SQL作成

連載記事「SpringBoot アプリ開発」を読み進めると、サンプルの Webアプリを制作することができます。

今回は、サンプルアプリのプロジェクトとSQLを作成していきます。

連載記事

SpringBoot アプリ開発の連載記事は以下の通りです。

  1. 概要・使用プロダクト
  2. プロジェクト作成・SQL作成(今回の記事)
  3. モデル・リポジトリの作成
  4. コントローラー・メインの作成
  5. HTML・JavaScriptの作成
  6. CSS・画像の作成
  7. テスト・動作確認

目次

  1. ディレクトリ構成
  2. ビルドファイルの作成
  3. 設定ファイルの作成
  4. SQLファイルの作成

1. ディレクトリ構成

事前に以下のディレクトリ構成を作成しておきます。

spring-boot-tweet
└─src
    ├─main
    │  ├─java
    │  │  └─sample
    │  │       ├─controller
    │  │       ├─model
    │  │       └─repository
    │  └─resources
    │        ├─db
    │        │  └─migration
    │        └─static
    │              ├─css
    │              ├─img
    │              └─js
    └─test
         └─java
              ├─it
              └─sample
                   └─controller

プロジェクトのルートディレクトリは「spring-boot-tweet」です。mainにはプロダクトコード、testにはテストコードが格納されます。

2. ビルドファイルの作成

ルートディレクトリの下に、以下のビルドファイルを作成します。

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.2.3</version>
    <relativePath /> <!-- lookup parent from repository -->
  </parent>
  <groupId>sample</groupId>
  <artifactId>spring-boot-tweet</artifactId>
  <version>1.0.0</version>
  <description>Spring Boot Sample Web App.</description>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>21</java.version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
      <groupId>org.flywaydb</groupId>
      <artifactId>flyway-core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.postgresql</groupId>
      <artifactId>postgresql</artifactId>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.codeborne</groupId>
      <artifactId>selenide</artifactId>
      <version>7.2.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
</project>

3. 設定ファイルの作成

Spring Boot の設定ファイルを作成します。

src/main/resources/application.properties

spring.application.name=tweet

spring.datasource.url=jdbc:postgresql://localhost:5432/tweet
spring.datasource.username=user
spring.datasource.password=pass

spring.jackson.date-format=yyyy/MM/dd HH:mm:ss
spring.jackson.time-zone=Asia/Tokyo

PostgreSQLtweet スキーマ(データベース)に接続するようにしています。

4. SQLファイルの作成

Flywayが実行するSQLファイルを作成します。

src/main/resources/db/migration/V1__Create.sql

CREATE TABLE tweet (
  id bigserial PRIMARY KEY,
  txt varchar(100) NOT NULL,
  version bigint NOT NULL,
  update_time timestamp NOT NULL DEFAULT current_timestamp,
  create_time timestamp NOT NULL DEFAULT current_timestamp
);

SQLが実行されると、つぶやきを格納するテーブルが作成されます。アプリの起動時に、DBマイグレーションとして1回だけ実行されます。

ファイル名は、Flywayの命名規約に従っています。

GitHubリポジトリ

アプリのコードは、以下のリポジトリにもあります。

spring-boot-tweet - GitHub

次の連載記事

3. モデル・リポジトリの作成