の続きです。
いろいろやっていたと思うのですが、あまりメモに残してなかったのでざっくりと。間違った情報があったら申し訳ありません。
2/9~2/13
エンティティとテーブルの再構築
- とりあえずIntegerとString(VARCHAR)で開発を進めていた
- 実際の現行テーブルは数値にはNUMERIC、文字列にはCHARが使われていた
- というわけで型を揃えることにした
- gen-entityを行うと以下のようになった
- gen-ddlでは以下のようになる
- BigDecimal/DECIMAL、String/VARCHARで進めていく方針に変えた
- S2JDBC-GenはDBのリファクタリングに非常に便利
- が、もっと早い段階で現行のDB設計を確認しておくべきだとも思った
マイグレーション初体験
- マイレーション…テーブル定義(DDL)からテーブルを再構築すること
- S2JDBC-Genにより、DB2へgen-migrate
- 外部キー生成で失敗した
- 無くても支障はないので、外部キーを除いて実行したらうまくいった
- 参考:Seasar2 - S2JDBC-Gen - Migrate
SQL自動生成でできること
- 1対多の結合で、多側の最新のレコードのみ結合したい処理があった
- MAX関数+自己結合で実現しようと考えた
- が、SQL自動生成ではSELECT句を指定できないので、どうも不可能っぽい
- 最新かどうかをフラグで持つ代替カラムを新たに設けることにした
- (ビューを作っておいて結合する、という手もあったかもしれない)
Long型
- 数値に「L」をつけるとLong型と解釈されることを知った
- e.g. public Long a = 1L;
ファイル書き込み
- ファイル作成してから、ストリームを開いて書き込む
- PrintWriterを利用した