MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

【Spring Boot】HibernateでMySQLのテーブルを自動作成する方法

Spring BootとHibernateを組み合わせると、エンティティクラスから自動的にMySQLのテーブルを作成できます。本記事では、application.propertiesの設定だけでテーブルを自動生成する手順を、実際のコード例とともにわかりやすく解説します。

1. application.propertiesの設定

テーブルを自動作成するには、まずapplication.propertiesに以下の1行を追加します。

spring.jpa.hibernate.ddl-auto=update

ddl-auto=updateを指定すると、アプリケーションの起動時にHibernateがエンティティクラスの定義を読み取り、対応するテーブル(ここではdemo88)を自動的に作成してくれます。既存のテーブルがある場合は、差分のみが更新される点も便利です。

今回使用するapplication.propertiesの全体像は以下の通りです。

spring.datasource.platform=mysql
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.ddl-auto=update
server.port=8191

spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/sampledatabase
spring.datasource.username=root
spring.datasource.password=123456

設定項目のポイント

  • spring.jpa.database-platform: MySQL用のInnoDBダイアレクトを指定し、Hibernateが適切なSQLを生成できるようにします。
  • spring.datasource.url: 接続先のデータベース(ここではsampledatabase)を指定します。
  • server.port: アプリケーションが使用するポート番号です。環境に合わせて変更してください。

2. エンティティクラスの作成

次に、テーブルのカラム定義となるエンティティクラスdemo88を作成します。

コード例

package com.automaticallytablecreation;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table
public class demo88 {
    @Id
    private int id;
    @Column(name="name")
    private String name;
}

@Entityアノテーションを付けることで、このクラスがデータベースのテーブルにマッピングされます。@Idは主キーを、@Columnはカラム名を指定するためのアノテーションです。

3. メインクラスの作成

続いて、Spring Bootアプリケーションの起動クラスを作成します。

コード例

package com.automaticallytablecreation;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class AutomaticTableApplication {
    public static void main(String[] args) {
        SpringApplication.run(AutomaticTableApplication.class, args);
    }
}

4. アプリケーションの実行とテーブル作成の確認

メインクラスを右クリックし、「Run As」→「Java Application」を選択してアプリケーションを実行します。起動が完了すると、Hibernateによって自動的にテーブルが作成されます。

実行すると、コンソールには以下のような出力が表示されます。

出力結果

【Spring Boot】HibernateでMySQLのテーブルを自動作成する方法

5. 作成されたテーブルの検証

実際にテーブルが正しく作成されたか確認してみましょう。MySQLクライアントで以下のコマンドを実行します。

mysql> show create table demo88;

実行結果は以下の通りです。

出力結果

+--------+------------------------------------------------------------+
| Table  | Create Table                                               |
+--------+------------------------------------------------------------+
| demo88 | CREATE TABLE `demo88` (
    `id` int NOT NULL,
    `name` varchar(255) DEFAULT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci     |
+--------+-------------------------------------------------------------+
1 row in set (0.03 sec)

このように、idカラムが主キー(PRIMARY KEY)として設定され、nameカラムは可変長文字列型で作成されていることが確認できます。エンティティクラスの定義どおりにテーブルが自動生成されているのがわかりますね。

まとめ

spring.jpa.hibernate.ddl-auto=updateを設定するだけで、HibernateがエンティティクラスをもとにMySQLのテーブルを自動作成してくれます。開発初期段階でのスキーマ管理が非常に楽になるため、ぜひ活用してみてください。なお、本番環境では意図しないスキーマ変更を防ぐため、nonevalidateの利用を検討することをおすすめします。

  1. JavaのPreparedStatementを使ってMySQLテーブルを更新する方法

    JavaからMySQLのテーブルを更新するには、PreparedStatementを使用するのが一般的で安全な方法です。PreparedStatementを使うことで、SQLインジェクションを防ぎつつ、パラメータを動的に設定できます。この記事では、実際にテーブルを作成し、Javaプログラムからレコードを更新するまでの一連の手順を解説します。1. テーブルの作成まず、MySQLで更新用のテーブルを作成しましょう。mysql> create table DemoTable( Id int, FirstName varchar(40) ); Query OK, 0 rows a

  2. Javaを使ってMySQLテーブルにレコードを挿入する方法

    はじめに本記事では、JavaのJDBC(Java Database Connectivity)を使用して、MySQLデータベースのテーブルにレコードを挿入する手順を解説します。まずテーブルを作成し、その後Javaプログラムからデータを登録するまでの一連の流れを見ていきましょう。1. MySQLでテーブルを作成するまず、データを挿入するためのテーブルを作成します。以下はMySQLでテーブルを作成するクエリです。mysql> create table DemoTable(   Id int,   Name varchar(30),&