概要
Spring Data JPAを開発に使用していて気づいた、アイデアというほどでもない諸々のメモです。
陳腐化するのも早そうですが、自分の備忘用にも今後追記していくと思います。
念のため、対象になるバージョンも太字で付記しておきます。
@Query
で頻出する句は文字列定数で管理する
ver.2.x
@Query
はメソッド単位のため、同じ記述を複数のメソッドに行わなければならないケースが出てきます。
典型的な例が集計結果をProjectionでDTOにデータを格納する場合のselect new packages.DTO(...)
など。
そういう場合はクエリ用のヘルパークラスかDTOに文字列の定数として頻出句を定義してしまうのが良さそうです。Specificationを定義していたらその中も良さそうですね。
アノテーションに指定するクエリはその時点では文字列でしかなく、定数はIDEが内容を表示してくれるので確認も困りません。当然ながら、誤記の危険も減りますし、変更への対応も楽になります。
@Query
で使用するJPQLではエイリアスを短くしない
JPQLの書き方を検索すると非常に短いエイリアスを使用している例をよく見かけます。
シンプルなクエリなら良いですが、多くのテーブルを複雑にJOINするようなクエリで極端に短いエイリアスを使用していると、可読性が著しく下がります。
リファクタリングの時に後悔しますし、エイリアス名をドキュメント化するような事態になりかねません。
タイプする文字数は多くなりますが、エンティティの名前を使用するのが無難です。