SQL DDL から Java エンティティクラス変換ツール

SQL DDL文をJavaエンティティクラスに変換、JPA、Lombok、バリデーションアノテーションをサポート

データ型マッピング

文字列型

  • VARCHAR, CHAR, TEXT → String
  • LONGTEXT, MEDIUMTEXT → String
  • ENUM → String

数値型

  • INT, INTEGER → Integer
  • BIGINT → Long
  • SMALLINT → Short
  • TINYINT → Byte
  • DECIMAL, NUMERIC → BigDecimal
  • FLOAT, DOUBLE → Double

時間型

  • DATETIME, TIMESTAMP → LocalDateTime
  • DATE → LocalDate
  • TIME → LocalTime

その他の型

  • BOOLEAN, BOOL → Boolean
  • BLOB, BINARY → byte[]
  • JSON → String

命名規約

キャメルケース:user_name → userNameaccess_date → accessDate
アンダースコア:user_name → user_nameaccess_date → access_date

時間型マッピング

時間オブジェクト有効:DATETIME → LocalDateTimeDATE → LocalDateTIME → LocalTime
時間オブジェクト無効:DATETIME → StringDATE → StringTIME → String

ツール概要:SQL DDL から Java エンティティクラス変換ツール

Java開発、特にSpring BootとJPAフレームワークを使用する際、データベーステーブル構造に基づいてエンティティクラスを作成する必要がよくあります。これらのエンティティクラスを手動で書くのは時間がかかるだけでなく、エラーが発生しやすいです。このツールは、SQL DDL文を標準的なJavaエンティティクラスに自動変換し、開発効率を大幅に向上させます。

SQL DDL から Java エンティティクラス変換ツールとは?

SQL DDL から Java エンティティクラス変換ツールはSQL DDLとJava entityの変換を素早く行い、すぐ使える結果を出力します。

使い方

  1. SQL DDLの内容を貼り付けるかパラメータを入力します。
  2. Java entityの出力形式を選び、オプションを調整します。
  3. 結果を確認してコピーまたはダウンロードします。

よくある利用シーン

  • SQL DDL↔Java entityのフォーマット移行
  • SQL DDLデータをJava entityのワークフローやコード生成に利用
  • 変換結果の仕様チェック

❓ よくある質問

Q1: 変換に失敗する/空になる?
A: SQL DDLの入力が正しいか確認してください。

Q2: 出力が違って見える?
A: Java entityのルールに合わせて整形される場合があります。

Q3: 一括処理は?
A: 安定のため小分けにして処理してください。

✨ 主な機能

  • 🔄 スマート変換: CREATE TABLE文を自動解析し、対応するJavaエンティティクラスを生成
  • 🏷️ 複数アノテーション対応: JPA、Lombok、Bean Validationアノテーションの生成をサポート
  • 📊 型マッピング: SQLデータ型からJava型への完全なマッピング
  • ⚙️ 設定可能オプション: パッケージ名、アノテーション生成、命名規約、時間型マッピングのカスタマイズ
  • 🔧 制約処理: 主キー、外部キー、一意制約、デフォルト値などの自動処理
  • 📝 コード規約: Java命名規約に従ったコードの生成
  • 🎯 命名の柔軟性: キャメルケースとアンダースコア命名の両方をサポート
  • 時間型選択: 時間フィールドを時間オブジェクトまたは文字列にマッピングするオプション

📖 使用例

基本テーブル構造の変換

入力 SQL DDL:

CREATE TABLE users (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100) NOT NULL,
    age INT,
    is_active BOOLEAN DEFAULT TRUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

出力 Javaエンティティ:

package com.example.entity;

import java.time.LocalDateTime;
import javax.persistence.*;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import java.io.Serializable;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "users")
public class Users implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = false)
    private Long id;

    @Column(name = "username", nullable = false, unique = true)
    private String username;

    @Column(name = "email", nullable = false)
    private String email;

    @Column(name = "age")
    private Integer age;

    @Column(name = "is_active")
    private Boolean isActive;

    @Column(name = "created_at")
    private LocalDateTime createdAt;

    @Column(name = "updated_at")
    private LocalDateTime updatedAt;
}

📐 データ型マッピングテーブル

MySQL型マッピング

SQL型 Java型 説明
VARCHAR, CHAR, TEXT String 文字列型
INT, INTEGER Integer 32ビット整数
BIGINT Long 64ビット整数
SMALLINT Short 16ビット整数
TINYINT Byte 8ビット整数
DECIMAL, NUMERIC BigDecimal 高精度小数
FLOAT Float 単精度浮動小数点
DOUBLE Double 倍精度浮動小数点
BOOLEAN, BOOL Boolean ブール値
DATETIME, TIMESTAMP LocalDateTime 日時
DATE LocalDate 日付
TIME LocalTime 時刻
JSON String JSONデータ
BLOB, BINARY byte[] バイナリデータ

⚙️ 設定オプション詳細

アノテーション設定

  • JPA アノテーション生成: @Entity@Table@Column@Id などのJPA標準アノテーションを追加
  • Lombok アノテーション生成: @Data@NoArgsConstructor@AllArgsConstructor アノテーションを追加
  • バリデーションアノテーション生成: @NotNull@Size などのBean Validationアノテーションを追加
  • Serializable インターフェース実装: 生成されるクラスにシリアライゼーションインターフェースを実装

命名規約設定

  • キャメルケース有効: user_nameuserName(推奨、Java規約に準拠)
  • アンダースコア保持: user_nameuser_name(特別な要件のシナリオ)

時間型マッピング設定

  • 時間オブジェクトにマッピング: DATETIMELocalDateTime(推奨、型安全)
  • 文字列にマッピング: DATETIMEString(互換性を考慮)

🔧 使用のコツ

  1. 命名規約: プロジェクトの要件に応じてキャメルケースまたはアンダースコア命名を選択
  2. アノテーション選択: JPA、Lombok、バリデーションアノテーションを選択的に生成できます
  3. パッケージ名設定: 生成されるコードのパッケージ名をカスタマイズできます
  4. シリアライゼーション対応: Serializableインターフェースの実装を選択できます
  5. 制約処理: 主キー、一意制約、デフォルト値などを自動認識します
  6. 時間型: ビジネス要件に基づいて時間オブジェクトまたは文字列マッピングを選択

🎓 学習ポイント

  • SQL DDL文の構造と構文の理解
  • Javaエンティティクラスの設計とアノテーション使用の習得
  • JPA仕様とHibernate実装の学習
  • データベース設計とORMマッピングのベストプラクティスの理解

このSQL DDLからJavaエンティティクラス変換ツールは、Java開発者の強力なアシスタントであり、データベースエンティティの作成をシンプルで効率的にします!