IntelliJ IDEAのDatabase WindowsからDoma2用のEntityを生成してみたお話です。
IntelliJのデフォルトの状態だと下の画像のようにGenerated POJOsしか選択できません。ここに、Doma2用のEntityを生成するスクリプトを追加してEntityを生成できるようにします。
Doma2のEntity生成用スクリプトをIntelliJに登録する
DatabaseウィンドウからDoma2のエンティティテンプレートを生成するやつ · GitHubからGenerate Doma Entity.groovyをダウンロードして、IntelliJに登録します。
IntelliJへの登録は、下の画像のようにProjectウィンドウのScratches and Consolesの中のExtensions->Database Tools and SQL->schemaの中に配置するだけです。
Entityを生成する
生成したいテーブルを右クリック->Scripted Extensions->Generate Doma Entity.groovyを選択します。保存場所を聞かれるので好きな場所を選びます。
生成される内容
生成対象のテーブル定義
create table test_table ( id bigserial not null constraint test_table_id_pk primary key, name varchar(255) not null, age smallint not null, birthday date not null, created timestamp not null )
生成されるEntity
package com.sample; import org.seasar.doma.Entity; import org.seasar.doma.Table; import org.seasar.doma.Id; import org.seasar.doma.GeneratedValue; import org.seasar.doma.GenerationType; @Entity(immutable = true) @Table(name = "test_table") public class TestTableEntity { @Id public final Long id; public final String name; public final Short age; public final java.time.LocalDate birthday; public final java.time.LocalDateTime created; public TestTableEntity(Long id, String name, Short age, java.time.LocalDate birthday, java.time.LocalDateTime created) { this.id = id; this.name = name; this.age = age; this.birthday = birthday; this.created = created; } }
生成されるEntityで微妙なところ
- パッケージ名がcom.sample固定なので、必ず変更が必要
- PostgreSQLのserialが採番カラムとして判断できずGeneratedValueがつかない(他のデータベースの自動採番カラムは未確認)
おわり