SpringBootでDoma2を利用してRDBMS(PostgreSQL、MySQLなど)を利用する実装例です。
- 未知カラム無視ハンドラの提供:
UnknownColumnIgnoreHandler(com.example.doma.jdbc.UnknownColumnIgnoreHandler)。DomaConfigで、本番系(spring.profiles.activeがdevel以外)でのみ有効化し、未知カラムを無視して安全に運用。
- SQLファイルのキャッシュ戦略をプロファイルで切替:
develプロファイルは即時反映のためNoCacheSqlFileRepository、それ以外はGreedyCacheSqlFileRepository。 doma-spring-boot-starterを基盤に、必要最小限のBeanを追加・上書きして運用特性(ハンドラ/キャッシュ)を調整。
doma-spring-boot-starterで自動設定を利用。DaoはDIで注入、@TransactionalでTx制御、接続はapplication.propertiesで管理。config/DomaConfig.javaで必要に応じてDialect/Repository/HandlerなどのBeanを定義し、AutoConfigurationの上に最小限のカスタマイズを適用。
- Java 21
- Docker / Docker Compose(PostgreSQL用)
- Maven 3.6+(
./mvnw推奨)
# logディレクトリ作成(権限設定必須)
sudo rm -rf log && sudo mkdir -p log/postgres && sudo chown -R $(whoami):$(id -gn) log
# PostgreSQL起動(初期化に約15秒)
docker compose up -d
sleep 15
# スキーマ作成
PGPASSWORD=example psql -h localhost -U example -d example -f schema/create_table.sql
# テーブル確認
PGPASSWORD=example psql -h localhost -U example -d example -c "\\d reservation;"