バージョン移行{0.9.6.2 to 0.9.6.3}
アップグレードの方法について
こちらをご覧下さい。
環境上の注意点
古いバージョンのDBFluteランタイム(JARファイル)が「WEB-INF/lib」の下などに残らないようにご注意下さい。
java.util.Dateの実体がjava.util.Dateそのものに
(主にDATE型にマッピングされる)java.util.Dateのカラムをselectしたときのインスタンスの実体が変わります。
- 今まで:java.sql.Timestamp
- これから:java.util.Date
これは改善点です。TimestampとDateは対称性がないためequals()で比較するときなど注意が必要でしたが、これからはその必要はありません。 移行に関しては、基本的に意識することはありません。Timestampが来ることを前提としたプログラムを書いている場合は注意が必要ですが、 そもそも実体のインスタンスに依存するプログラムを書くことは推奨されません。
DBFluteConfigのロックをDIコンテナ初期化前は解除
DBFluteConfigのロックのDIコンテナ初期化前の状態が変わります。
- 今まで:ロックされている (設定するには解除が必要)
- これから:ロックされていない
今までもこれからも、DIコンテナが初期化されたときにロックされるのは同じです。 DBFluteConfigは基本的にDIコンテナに初期化されるべきものということで、それに合わせてロックも初期化前は解除しておくようにしました。 既にロック解除のプログラムを書いていてもそのまま動作するので特に意識する必要はありません(削除できるなら削除してOKです)。
実装上の注意点
orQuery改めorScopeQuery
orQueryにて仕様バグがありましたので、仕様を変えて新たにorScopeQueryという機能に改めました。経緯について詳しくは "DBFluteユーザの集い" をご覧下さい。
変わった点は "or条件をくっ付ける" だったのが、"orの範囲を指定する" というようになった点です。
ex) 旧方式: MemberAccout and (Birthdate or MemberName or MemberId)
MemberCB cb = new MemberCB();
cb.query().setMemberAccount_Equal("XXX");
cb.query().setBirthdate_Equal(currentDate);
cb.orQuery(new OrQuery<MemberCB>() {
public void query(MemberCB orCB) {
orCB.query().setMemberName_PrefixSearch("J");
orCB.query().setMemberId_Equal(3);
}
});
↓↓↓
ex) 新方式: MemberAccout and (Birthdate or MemberName or MemberId)
MemberCB cb = new MemberCB();
cb.query().setMemberAccount_Equal("XXX");
cb.orScopeQuery(new OrQuery<MemberCB>() {
public void query(MemberCB orCB) {
orCB.query().setBirthdate_Equal(currentDate);
orCB.query().setMemberName_PrefixSearch("J");
orCB.query().setMemberId_Equal(3);
}
});
orQuery()というメソッドは完全に無くなっており、移行するとこの機能を利用している箇所がコンパイルエラーになります。 影響反映がわかるようにわざとそのようにしております。