DBFlute with Jakarta
自動生成したら javax.パッケージのimport文がコンパイルエラーになってませんか?
Jakarta対応のプロパティを使ってください。
そもそもJakarta対応とは?
Java標準のフレームワークであって JavaEE が、オープンソースコミュニティ Eclipse Foundation に寄贈され、JakartaEE というオープンソースとして生まれ変わりました。
その際、javax.始まりのパッケージが、jakarta.始まりのパッケージに変わるなど、利用者が意識せざるを得ない修正が入りました。 そして、多くのフレームワークがJavaEEの一部機能を利用しているため、JavaEEを使っていない開発者にも大きな影響があります。
- Jakarta Annotation
- LastaFluteでよく使っている@Resourceアノテーション
- Jakarta Dependency Injection
- CDIでよく使っている@Injectアノテーション
- など
- など
ゆえに、DBFluteもケースによっては javax. ではなく jakarta. で自動生成しないといけなくなりました。 そのための対応がされています。(@since 1.2.7)
DBFluteをJakartaに
まず必要かどうか?
まず、自動生成してみてコンパイルエラーになってないのであれば、そもそも対応が必要ないかもしれません。
例えば、Spring Framework の場合、jakartaパッケージを利用するようなコードを DBFlute が自動生成しないようにしているので(@since 1.2.7)、この後に紹介するプロパティを使わなくても利用できるかもしれません。 (ただし、今後の変化で単純に自動生成コード上のパッケージだけの問題に留まるとは限らないので、ずっと何もしなくて良いとは断言できないところではあります)
dfpropでJakarta移行
DBFluteが自動生成するクラスでJakartaクラスを参照している箇所があります。 デフォルトではjavaxパッケージでの参照になっているので、Jakarta環境ではコンパイルエラーになります。
littleAdjustmentMap.dfpropにて、isMigrateOldJavaxToJakartaをtrueにするとjakartaパッケージでの参照になります。(@since 1.2.7)
e.g. DBFluteの自動生成クラスをjakarta対応させる @littleAdjustmentMap.dfprop
...
# o relationalNullObjectMap: (NotRequired - Default map:{})
# o cursorSelectFetchSize: (NotRequired - Default null)
# o refreshMap: (NotRequired - Default map:{})
# o optimisticLockMap: (NotRequired - Default map:{})
#
# *The line that starts with '#' means comment-out.
#
map:{
# to use #jakarta package on generated classes by DBFlute
; isMigrateOldJavaxToJakarta = true
# /- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# o isAvailableAddingSchemaToTableSqlName: (NotRequired - Default false)
...
LastaFluteのexampleにて利用されていますので参考に。
FreeGenのJakarta対応は?
FreeGenのテンプレートの中で、isMigrateOldJavaxToJakartaの値を利用することができます。
以下のような要領で修正しましょう。
e.g. RemoteApiGenのアノテーションをjakarta対応させる @Velocity
#set($added = $importList.add('javax.validation.constraints.NotNull'))
↓↓↓
#set($notNullAnnotation = ${manager.currentJakartaPackage} + '.validation.constraints.NotNull')
#set($added = $importList.add(${notNullAnnotation}))
...
#generateIndent($nestList.size())@javax.validation.Valid
↓↓↓
#generateIndent($nestList.size())@${manager.currentJakartaPackage}.validation.Valid
LastaFluteのJakarta対応は?
さらに、LastaFluteを利用している場合は、専用のページをご覧ください。