Skip to content

Instantly share code, notes, and snippets.

@nakamura-to
Last active August 29, 2015 13:57
Show Gist options
  • Save nakamura-to/9683436 to your computer and use it in GitHub Desktop.
Save nakamura-to/9683436 to your computer and use it in GitHub Desktop.

Doma 2 素案 振り返り

Doma 2.0-beta-2 がリリースできて一段落ということで、半年くらい前に書いた Doma 2 素案 を振り返ります。

結論としては、おおむね計画通りでした。

java.util.Optional への対応

対応しました。

java.util.OptionalIntjava.util.OptionalLongjava.util.OptionalDoubleにも対応しました。

エンティティクラスのフィールドやDaoメソッドの戻り値やパラメータで使えます。

@Delegate の廃止と default メソッドのサポート

対応しました。

デフォルトメソッド

org.seasar.doma.jdbc.IterationCallback のヘルパーの追加

対応しませんでした。 IterationCallback は Doma の内部で利用していますが、 直接利用はサポートしないように変更しました。

理由は Stream があれば事足りるからです。 Stream を使った検索 はサポートしています。

拡張ポイントに Dao メソッドの java.lang.reflect.Method インスタンスを渡す

ぼぼ予定通り対応しましたが、一部対応しませんでした。

org.seasar.doma.jdbc.SqlFileRepositoryorg.seasar.doma.jdbc.query.QueryMethod のインスタンスを渡すようにしました。 これで Dao のメソッドに注釈されたアノテーションなどを見て処理をカスタマイズできるようになりました。

rg.seasar.doma.jdbc.JdbcLogger へ渡すことはやめました。 必要性がないと判断したからです。

Dao メソッドの実装のカスタマイズをサポート

対応しました。

QueryImplementorsCommandImplementors を導入してSQLの組み立てや実行に関して処理をフックできるようにしています。

ただ、どういうカスタマイズをしたいのかユースケースが明確になっていないので、フィードバックをいただけるとしたらうれしい箇所です。実現したいユースケースによっては、もう少し改善の余地があると思っています。

JSR 310 Date and Time API への対応

予定通り対応していません。

もしJSR 310 Date and Time APIのクラスを利用したい場合は 外部ドメイン を使って独自にマッピングするのがよいと思います。

java.util.stream.Stream による遅延ローディング

対応しました。

ストリーム検索

gakuzzzzさんの案 をそのまま採用させてもらいました。

RDBMSで予約されているキーワードの利用をサポート

対応しました。

@Table@Columnquote 要素を加えました。 この要素に true を設定すると自動生成されるSQLにおいて自動で名前がエスケープされます。

注釈処理のオプションの名前を整理

対応しました。 オプションの名前にプレフィックスとして doma. をつけるようにしました。

注釈処理

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment