この文書では、既存のDomaをアップグレードする際の注意点を記します。
バージョンAからバージョンBにアップグレードする場合には、バージョン間に 記載されている注意点に従って作業を行なえば良いようになっています。
1.36.0 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
特にありません。
1.35.0 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
特にありません。
1.34.0 からの重要な変更は以下のとおりです。
次のインタフェースがジェネリック化されました。
使用例は以下の通りです。
public class EmployeeEntityListener implements EntityListener<Employee> { @Override public void preDelete(Employee entity, PreDeleteContext<Employee> context) { ... } @Override public void preInsert(Employee entity, PreInsertContext<Employee> context) { ... } ... }
エンティティクラスに継承関係があり、親エンティティクラスに指定したエンティティリスナークラスを子のエンティティクラスに引き継ぐ場合、エンティティリスナークラスに型パラメータの定義が必須となりました。 たとえば、次のような継承関係を考えます。
@Entity(listener = ParentListener.class) public class ParentEntity { ... }
@Entity public class ChildEntity extends ParentEntity { ... }
このとき、ParentListenerには、次のようにChildEntityを受け取れるような型パラメータの定義が必要です。
public class ParentListener<E extends ParentEntity> implements EntityListener<E> { @Override public void preDelete(E entity, PreDeleteContext<E> context) { ... } @Override public void preInsert(E entity, PreInsertContext<E> context) { ... } ... }
org.seasar.doma.jdbc.builder.SelectBuilderの次のメソッドについて名前を変更しました。
特にありません。
特にありません。
1.33.0 からの重要な変更は以下のとおりです。
エンティティクラスが他のエンティティクラスを継承する場合、@Entityのlistener要素やnaming要素を親から引き継ぐようになりました。
@Entity(listener = ParentListener.class, naming = NamingType.UPPER_CASE) public class ParentEntity { ... }
@Entity public class ChildEntity extends ParentEntity { ... }
上記のような継承関係がある場合、上のChildEntityを注釈する@Entityの要素には何も指定されていませんが、次のような指定がある場合と同等です。
@Entity(listener = ParentListener.class, naming = NamingType.UPPER_CASE) public class ChildEntity extends ParentEntity { ... }
listener要素やnaming要素を親から引き継ぎたくない場合は、明示的に値を設定してください。それぞれの要素のデフォルト値を設定すれば、以前のバージョンで何も指定しなかった場合と同等の挙動になります。
@Entity(listener = NullEntityListener.class, naming = NamingType.NONE) public class ChildEntity extends ParentEntity { ... }
特にありません。
特にありません。
1.32.0 からの重要な変更は以下のとおりです。
@OriginalStatesが注釈されたEntityを継承した場合、継承したクラスにおいてもEntity取得時の状態が管理されるようになりました。
1.32.0において、意図的にそのような継承関係を使用している場合、影響を受けます。たとえば、次のような継承関係です。
@Entity @Table(name = "AAA") public class ParentEntity { Integer aaa; Integer bbb; @OriginalStates ParentEntity states; }
@Entity @Table(name = "BBB") public class ChildEntity extends ParentEntity { Integer ccc; }
このような継承関係がある場合に、1.32.0以前と同等の挙動にするには、以下に示すようにParentEntityから@OriginalStatesを除去してChildEntity に影響を与えないようにし、@OriginalStatesをつけた別Entity(StatesManagedParentEntity)を作成してください。そして、@OriginalStatesで管理された値が必要な処理には新規作成したStatesManagedParentEntityを使ってください。StatesManagedParentEntityはParentEntityを継承するようにします。こうすることで、修正箇所を最小限にできます。
@Entity @Table(name = "AAA") public class ParentEntity { Integer aaa; Integer bbb; }
@Entity @Table(name = "BBB") public class ChildEntity extends ParentEntity { Integer ccc; }
@Entity @Table(name = "AAA") public class StatesManagedParentEntity extends ParentEntity { @OriginalStates StatesManagedParentEntity states; }
特にありません。
特にありません。
1.31.0 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
特にありません。
1.30.0 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
特にありません。
1.29.0 からの重要な変更は以下のとおりです。
特にありません。
1.28.0 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
特にありません。
1.27.1 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
特にありません。
1.27.0 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
特にありません。
1.26.0 からの重要な変更は以下のとおりです。
org.seasar.doma.jdbc.ClassHelper getClassHelper();
org.seasar.doma.jdbc.entity.EntityTypeFactory#getEntityType(Class<E> entityClass) org.seasar.doma.jdbc.domain.DomainTypeFactory#getDomainType(Class<D> domainClass) org.seasar.doma.jdbc.domain.DomainTypeFactory#getExternalDomainType(Class<D> domainClass)
org.seasar.doma.jdbc.entity.EntityTypeFactory#getEntityType(Class<E> entityClass, ClassHelper classHelper) org.seasar.doma.jdbc.domain.DomainTypeFactory#getDomainType(Class<D> domainClass, ClassHelper classHelper) org.seasar.doma.jdbc.domain.DomainTypeFactory#getExternalDomainType(Class<D> domainClass, ClassHelper classHelper)
特にありません。
特にありません。
1.25.0 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
特にありません。
1.24.0 からの重要な変更は以下のとおりです。
インタフェース org.seasar.doma.jdbc.domain.DomainType に新しいメソッド getValueClass が追加されました。org.seasar.doma.jdbc.domain.DomainType の実装クラスでは、このメソッドを実装してください
特にありません。
特にありません。
1.23.0 からの重要な変更は以下のとおりです。
Entityクラスごとにaptで生成されるEntityTypeクラスのpublicなフィールドの名前が変更されました。prefixとして$が付与されるようになりました。
この変更により、EntityTypeのpublicなフィールドを直接利用しているアプリケーションは影響を受けます。直接利用していないアプリケーションは影響を受けません。
1.23.0以前と互換性のあるフィールド名を使用したい場合は、注釈処理のオプションで、keyに「entity.field.prefix」、valueに「none」を指定してください。
http://doma.seasar.org/reference/apt.html
特にありません。
特にありません。
1.22.0 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
特にありません。
1.21.1 からの重要な変更は以下のとおりです。
@Override public ExceptionSqlLogType getExceptionSqlLogType() { return ExceptionSqlLogType.FORMATTED_SQL; }
特にありません。
特にありません。
1.21.0 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
特にありません。
1.20.1 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
特にありません。
1.20.0 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
特にありません。
1.19.0 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
1.18.0 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
特にありません。
1.17.0 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
特にありません。
1.16.0 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
特にありません。
1.15.0 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
1.14.0 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
特にありません。
1.13.0 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
特にありません。
1.12.0 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
特にありません。
1.11.0 からの重要な変更は以下のとおりです。
@EnumDomain public enum JobType { ... }
EnumDomainを利用した上記のコードは、Domainを利用することで下記のように記述できます。
@Domain(factoryMethod = "of") public enum JobType { ... }
完全なコード例については、ドキュメントを参照してください。
特にありません。
特にありません。
1.10.2 からの重要な変更は以下のとおりです。
特にありません。
1.10.1 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
特にありません。
1.10.0 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
特にありません。
1.9.0 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
特にありません。
1.8.0 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
特にありません。
1.7.0 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
特にありません。
1.6.0 からの重要な変更は以下のとおりです。
特にありません。
1.5.0 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
1.4.0 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
1.3.1 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
1.3.0 からの重要な変更はありません。
1.2.1 からの重要な変更はありません。
1.2.0 からの重要な変更はありません。
1.1.0 からの重要な変更は以下のとおりです。
特にありません。
特にありません。
1.0.0 からの重要な変更は以下のとおりです。
特にありません。
特にありません。