Domaの互換性に関する情報

この文書では、既存のDomaをアップグレードする際の注意点を記します。

バージョンAからバージョンBにアップグレードする場合には、バージョン間に 記載されている注意点に従って作業を行なえば良いようになっています。

Doma? バージョン1.38.0

1.37.0 からの重要な変更は以下のとおりです。

Doma

特にありません。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.37.0

1.36.0 からの重要な変更は以下のとおりです。

Doma

特にありません。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.36.0

1.35.0 からの重要な変更は以下のとおりです。

Doma

特にありません。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.35.0

1.34.0 からの重要な変更は以下のとおりです。

Doma

次のインタフェースがジェネリック化されました。

  • org.seasar.doma.jdbc.entity.PreInsertContext
  • org.seasar.doma.jdbc.entity.PreUpdateContext
  • org.seasar.doma.jdbc.entity.PreDeleteContext
  • org.seasar.doma.jdbc.entity.PostInsertContext
  • org.seasar.doma.jdbc.entity.PostUpdateContext
  • org.seasar.doma.jdbc.entity.PostDeleteContext

使用例は以下の通りです。

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の次のメソッドについて名前を変更しました。

  • ensuerResult -> ensureResult
  • ensureEntityMappingEnsured -> ensureResultMapping

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.34.0

1.33.0 からの重要な変更は以下のとおりです。

Doma

エンティティクラスが他のエンティティクラスを継承する場合、@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 {
  ...
}

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.33.0

1.32.0 からの重要な変更は以下のとおりです。

Doma

@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;
}

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.32.0

1.31.0 からの重要な変更は以下のとおりです。

Doma

特にありません。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.31.0

1.30.0 からの重要な変更は以下のとおりです。

Doma

特にありません。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.30.0

1.29.0 からの重要な変更は以下のとおりです。

Doma

  • H2 Database Engine用のDialect(org.seasar.doma.jdbc.dialect.H2Dialect)をH2 Database Engineのバージョン1.3.171に最適化しました。これまでと同等の挙動が望ましい場合は、設定クラスにてorg.seasar.doma.jdbc.dialect.H212126Dialectを使用してください。
  • Microsoft SQL Server 2012で導入されたシーケンスを使って識別子の自動生成ができるようになりました。Microsoft SQL Server 2012を使う場合は、設定クラスにてorg.seasar.doma.jdbc.dialect.MssqlDialectを使用してください。

Doma-Gen

  • Microsoft SQL Server 2012を使う場合は、タスクのdialectNameパラメータに"mssql"を指定してください。

Doma-Tools

特にありません。

Doma? バージョン1.29.0

1.28.0 からの重要な変更は以下のとおりです。

Doma

特にありません。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.28.0

1.27.1 からの重要な変更は以下のとおりです。

Doma

特にありません。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.27.1

1.27.0 からの重要な変更は以下のとおりです。

Doma

特にありません。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.27.0

1.26.0 からの重要な変更は以下のとおりです。

Doma

  • org.seasar.doma.jdbc.Configに次のメソッドが追加されました。
    org.seasar.doma.jdbc.ClassHelper getClassHelper();
  • org.seasar.doma.jdbc.ClassHelperは、アプリケーションサーバやフレームワークに依存したクラスの扱いを抽象化するためのインタフェースとして導入されました。
  • これまでまったく同じ振る舞いをさせるには、getClassHelperメソッドでorg.seasar.doma.jdbc.DefaultClassHelperのインスタンスを返すようにしてください。
  • Configの実装にorg.seasar.doma.jdbc.DomaAbstractConfigを使っている場合は、特に変更は不要です。
 
  • いくつかのメソッドが非推奨になりました。
    • 非推奨になったのは以下のメソッドです。
      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)
  • これまでと同じ振る舞いをさせるには、それぞれのメソッドの2番目の引数にorg.seasar.doma.jdbc.DefaultClassHelperのインスタンスを渡してください。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.26.0

1.25.0 からの重要な変更は以下のとおりです。

Doma

特にありません。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.25.0

1.24.0 からの重要な変更は以下のとおりです。

Doma

インタフェース org.seasar.doma.jdbc.domain.DomainType に新しいメソッド getValueClass が追加されました。org.seasar.doma.jdbc.domain.DomainType の実装クラスでは、このメソッドを実装してください

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.24.0

1.23.0 からの重要な変更は以下のとおりです。

Doma

Entityクラスごとにaptで生成されるEntityTypeクラスのpublicなフィールドの名前が変更されました。prefixとして$が付与されるようになりました。

この変更により、EntityTypeのpublicなフィールドを直接利用しているアプリケーションは影響を受けます。直接利用していないアプリケーションは影響を受けません。

1.23.0以前と互換性のあるフィールド名を使用したい場合は、注釈処理のオプションで、keyに「entity.field.prefix」、valueに「none」を指定してください。

http://doma.seasar.org/reference/apt.html

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.23.0

1.22.0 からの重要な変更は以下のとおりです。

Doma

特にありません。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.22.0

1.21.1 からの重要な変更は以下のとおりです。

Doma

  • インタフェース org.seasar.doma.jdbc.Config に新しいメソッド getExceptionSqlLogType が追加されました。org.seasar.doma.jdbc.Config の実装クラスでは、このメソッドを実装してください。これまでと同じ挙動をさせるための実装は以下のとおりです。
   @Override
   public ExceptionSqlLogType getExceptionSqlLogType() {
       return ExceptionSqlLogType.FORMATTED_SQL;
   }

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.21.1

1.21.0 からの重要な変更は以下のとおりです。

Doma

特にありません。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.21.0

1.20.1 からの重要な変更は以下のとおりです。

Doma

特にありません。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.20.1

1.20.0 からの重要な変更は以下のとおりです。

Doma

特にありません。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.20.0

1.19.0 からの重要な変更は以下のとおりです。

Doma

  • org.seasar.doma.wrapper.WrapperインタフェースにsetAccessorメソッドが追加されました。直接Wrapperをimplementsしている場合は、実装してください。
  • 以下のクラスについて、型パラメータとコンストラクタが変更されました。利用している場合は、変更に追随してください。
    • org.seasar.doma.jdbc.entity.BasicPropertyType
    • org.seasar.doma.jdbc.entity.AssignedIdPropertyType
    • org.seasar.doma.jdbc.entity.GeneratedIdPropertyType
    • org.seasar.doma.jdbc.entity.VersionPropertyType

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.19.0

1.18.0 からの重要な変更は以下のとおりです。

Doma

特にありません。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.18.0

1.17.0 からの重要な変更は以下のとおりです。

Doma

特にありません。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.17.0

1.16.0 からの重要な変更は以下のとおりです。

Doma

特にありません。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.16.0

1.15.0 からの重要な変更は以下のとおりです。

Doma

  • org.seasar.doma.jdbc.SqlNodeインタフェースのaddNodeメソッドとcopyメソッドが非推奨になりました。将来のバージョンで削除される可能性があります。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.15.0

1.14.0 からの重要な変更は以下のとおりです。

Doma

特にありません。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.14.0

1.13.0 からの重要な変更は以下のとおりです。

Doma

特にありません。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.13.0

1.12.0 からの重要な変更は以下のとおりです。

Doma

特にありません。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.12.0

1.11.0 からの重要な変更は以下のとおりです。

Doma

  • 注釈型org.seasar.doma.EnumDomainが非推奨になりました。既存のコードは動作しますが、新規に作成する場合は代わりにorg.seasar.doma.Domainを使用してください。
@EnumDomain
public enum JobType { ... }

EnumDomainを利用した上記のコードは、Domainを利用することで下記のように記述できます。

@Domain(factoryMethod = "of")
public enum JobType { ... }

完全なコード例については、ドキュメントを参照してください。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.11.0

1.10.2 からの重要な変更は以下のとおりです。

Doma

  • インタフェースorg.seasar.doma.jdbc.entity.EntityListenerが変更されています。以下の点について実装クラスを修正してください。
    • 既存のメソッド(preDelete, preInsert, preUpdate)に2番目のパラメータが追加された。
    • 削除/挿入/更新後に処理をするためのメソッド(postDelete, postInsert, postUpdate)が追加された。

Doma-Gen

  • テンプレートファイルのselectById.sql.ftlとselectByIdAndVersion.sql.ftlが修正されています。既存のバージョンのテンプレートファイルを拡張して使用している場合は、修正箇所を取り込んでください。 テンプレートファイルは、配布ファイルのresources/tempalteディレクトリに含まれています。

Doma-Tools

特にありません。

Doma? バージョン1.10.2

1.10.1 からの重要な変更は以下のとおりです。

Doma

特にありません。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.10.1

1.10.0 からの重要な変更は以下のとおりです。

Doma

特にありません。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.10.0

1.9.0 からの重要な変更は以下のとおりです。

Doma

特にありません。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.9.0

1.8.0 からの重要な変更は以下のとおりです。

Doma

特にありません。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.8.0

1.7.0 からの重要な変更は以下のとおりです。

Doma

特にありません。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.7.0

1.6.0 からの重要な変更は以下のとおりです。

Doma

  • @Update(sqlFile=true)、@BatchUpdate(sqlFile=true)、@Delete(sqlFile=true)、@BatchDelete(sqlFile=true)の場合にも、特定の条件下で楽観的排他制御のチェックを行なうようにしました。
    • これまでどおり楽観的排他制御を無効にするには、それぞれのアノテーションのignoreVersion要素にtrueを設定してください。
  • @Insert(sqlFile=true)、@BatchInsert(sqlFile=true)、@Update(sqlFile=true)、@BatchUpdate(sqlFile=true)、@Delete(sqlFile=true)、@BatchDelete(sqlFile=true)の場合にも、特定の条件下でエンティティリスナーを呼び出すようにしました。
    • これまでどおりエンティティリスナーを呼び出さないようにするには、エンティティリスナーを指定されたエンティティクラスの代わりに、エンティティリスナーを設定していない別のエンティティクラスかDTOクラスを使用してください。
  • @Updateと@BatchUpdateのincludeVersion要素を非推奨にし、代わりにignoreVersion要素を追加しました。
    • includeVersion要素の使用はやめ、ignoreVersion要素を利用してください。includeVersion要素は将来的に削除されます。

Doma-Gen

  • entity.ftlに代表されるテンプレートファイルが修正されています。既存のバージョンのテンプレートファイルを拡張して使用している場合は、修正箇所を取り込んでください。 テンプレートファイルは、配布ファイルのresources/tempalteディレクトリに含まれています。

Doma-Tools

特にありません。

Doma? バージョン1.6.0

1.5.0 からの重要な変更は以下のとおりです。

Doma

  • インタフェースorg.seasar.doma.jdbc.JdbcLoggerに以下のメソッドを追加しました。実装クラスがある場合は修正してください。実装方法は、org.seasar.doma.jdbc.UtilLoggingJdbcLoggerを参考にしてください。
    • logDaoMethodThrowing(String, String, RuntimeException)

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.5.0

1.4.0 からの重要な変更は以下のとおりです。

Doma

  • org.seasar.doma.wrapper.WrapperインタフェースにgetDefaultメソッドを追加しました。org.seasar.doma.wrapper.Wrapperインタフェースを実装しているクラスがある場合は、getDefaultメソッドを実装してください。
  • 基本型、基本型のList、ドメインクラスを返す@Selectが注釈されたDaoメソッドに対応するSQLで、SELECTで戻せるのは単一のカラムに限定しました。該当するSQLで、複数のカラムをSELECT句に記述している場合は、修正をお願いします。

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.4.0

1.3.1 からの重要な変更は以下のとおりです。

Doma

  • SQLファイル中の式コメントで、/*%elseif 条件式*/ と /*%else */ をサポートしました。今後は、--elseif 条件式-- や --else といったラインコメントではなく、これらのブロックコメントの elseif と else を使ってください。(推奨はしませんが、--elseif 条件式-- や --else がサポートされなくなるわけではありません。)

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.3.1

1.3.0 からの重要な変更はありません。

Doma? バージョン1.3.0

1.2.1 からの重要な変更はありません。

Doma? バージョン1.2.1

1.2.0 からの重要な変更はありません。

Doma? バージョン1.2.0

1.1.0 からの重要な変更は以下のとおりです。

Doma

  • インタフェースorg.seasar.doma.jdbc.JdbcLoggerに以下のメソッドを追加しました。実装クラスがある場合は修正してください。実装方法は、org.seasar.doma.jdbc.UtilLoggingJdbcLoggerを参考にしてください。
    • logAutoCommitEnablingFailure(String, String, SQLException)
    • logTransactionIsolationSettingFailuer(String, String, int, SQLException)
    • logLocalTransactionEnded(String, String, String)
    • logLocalTransactionRollbackFailure(String, String, String, SQLException)

Doma-Gen

特にありません。

Doma-Tools

特にありません。

Doma? バージョン1.1.0

1.0.0 からの重要な変更は以下のとおりです。

Doma

  • インタフェースorg.seasar.doma.jdbc.JdbcLoggerに以下のメソッドを追加しました。実装クラスがある場合は修正してください。実装方法は、org.seasar.doma.jdbc.UtilLoggingJdbcLoggerを参考にしてください。
    • logLocalTransactionCommitted(String, String, String)
    • logLocalTransactionRolledback(String, String, String)
    • logLocalTransactionSavepointCreated(String, String, String, String)
    • logLocalTransactionSavepointReleased(String, String, String, String)
    • logLocalTransactionSavepointRolledback(String, String, String, String)
  • インタフェースorg.seasar.doma.jdbc.JdbcLoggerのメソッドは例外をスローしてはいけないという制約を新たに設けました。例外をスローしないように修正してください。
  • 抽象クラスorg.seasar.doma.jdbc.DomaAbstractConfigにstaticでprotectedなメンバーをいくつか追加しました。既存のサブクラスのメンバと名前が重複しないことを確認してください。

Doma-Gen

特にありません。

Doma-Tools

特にありません。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-11-01 (土) 13:35:54 (807d)