LoginSignup
3
2

More than 5 years have passed since last update.

QueryDSL があんまり安全じゃない

Last updated at Posted at 2013-08-11

数ヶ月前に QueryDSL を使おうと思ったのですが、これが想像していたほど型安全ではなかったので採用を見送りました。何が安全ではないかというと、例えば UserUserGroup みたいなエンティティがあり、それぞれに name という String のプロパティを持っていたとすると、これが区別されない。QueryDSL が APT で生成するプロパティを見れば分かるんですが、こんな感じでプロパティがエンティティ型を持っていないのですね。

public final StringPath name = createString("name");

実際問題 User.nameUserGroup.name を厳密に区別して型安全に扱う必要性があるかというと、それが必要になるケースというのは稀だと思うので QueryDSL は意図的に割り切っているのかなという印象を持ちましたが、それまで自前で作成していた ORM では厳密に型を区別していたため、なんだかなぁと思って採用を止めたのでした(そういえば Doma がこのような型パラメータを採用したみたいですね)。

QueryDSL 使えば安全ですワイワイとか思っているとそうでもないというお話でした。


※ ちなみに自分ではこんな感じのライブラリを自作しました……。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2