【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によって自動的にテーブルが作成されます。
実行すると、コンソールには以下のような出力が表示されます。
出力結果

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のテーブルを自動作成してくれます。開発初期段階でのスキーマ管理が非常に楽になるため、ぜひ活用してみてください。なお、本番環境では意図しないスキーマ変更を防ぐため、noneやvalidateの利用を検討することをおすすめします。
-
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
-
Javaを使ってMySQLテーブルにレコードを挿入する方法
はじめに本記事では、JavaのJDBC(Java Database Connectivity)を使用して、MySQLデータベースのテーブルにレコードを挿入する手順を解説します。まずテーブルを作成し、その後Javaプログラムからデータを登録するまでの一連の流れを見ていきましょう。1. MySQLでテーブルを作成するまず、データを挿入するためのテーブルを作成します。以下はMySQLでテーブルを作成するクエリです。mysql> create table DemoTable( Id int, Name varchar(30),&