Doma 2.0-beta-2 がリリースできて一段落ということで、半年くらい前に書いた Doma 2 素案 を振り返ります。
結論としては、おおむね計画通りでした。
対応しました。
java.util.OptionalInt
、java.util.OptionalLong
、java.util.OptionalDouble
にも対応しました。
エンティティクラスのフィールドやDaoメソッドの戻り値やパラメータで使えます。
対応しました。
対応しませんでした。 IterationCallback は Doma の内部で利用していますが、 直接利用はサポートしないように変更しました。
理由は Stream があれば事足りるからです。 Stream を使った検索 はサポートしています。
ぼぼ予定通り対応しましたが、一部対応しませんでした。
org.seasar.doma.jdbc.SqlFileRepository
や org.seasar.doma.jdbc.query.Query
へ Method
のインスタンスを渡すようにしました。
これで Dao のメソッドに注釈されたアノテーションなどを見て処理をカスタマイズできるようになりました。
rg.seasar.doma.jdbc.JdbcLogger
へ渡すことはやめました。
必要性がないと判断したからです。
対応しました。
QueryImplementors
と CommandImplementors
を導入してSQLの組み立てや実行に関して処理をフックできるようにしています。
ただ、どういうカスタマイズをしたいのかユースケースが明確になっていないので、フィードバックをいただけるとしたらうれしい箇所です。実現したいユースケースによっては、もう少し改善の余地があると思っています。
予定通り対応していません。
もしJSR 310 Date and Time APIのクラスを利用したい場合は 外部ドメイン を使って独自にマッピングするのがよいと思います。
対応しました。
gakuzzzzさんの案 をそのまま採用させてもらいました。
対応しました。
@Table
や @Column
に quote
要素を加えました。
この要素に true
を設定すると自動生成されるSQLにおいて自動で名前がエスケープされます。
対応しました。
オプションの名前にプレフィックスとして doma.
をつけるようにしました。