JPARepositoryでparamを渡しつつPageを使う方法
こんにちは。Jildinのハゲタカです。
週末になると疲れもたまってきて禿げ散らかしそうになりませんか?
Jildinはそんな世の中をITの力で週休6日にしてしまおうと言う恐ろしい集団です。
さて、今日はそんなITの力を借りるためにGoogleの海で溺れる子羊ちゃんのための記事を書きたいと思います。
JpaでfindByとかしつつPageも使いたい
JpaRepositoryを利用している際に、Pageを使うことで件数を決めてちょっとずつDBからデータを取得することができます。そうすることでOOM(OutOfMemory)などが発生するリスクが激減するわけですね!
サンプルコード
Page<Timeline> findByUidIn(Collection uidList, Pageable pageble);
上記のコードはJildinのTimelineに表示するつぶやきを拾ってくるコードですね!Repositoryの部分のコードになります。これはfindByではなくIN句ですが、やり方にはなんの差異もありません。
uidListがフォロワーのUserIdが大量に入ったもの、pagebleがページングの規則が格納されたオブジェクトになります。中身は企業秘密です!
まとめ
書いてしまえばなんともないんですけど、僕が探した限りでは、findByしつつページングを利用しているサンプルコードは落ちてませんでした。
そもそもそういう使い方をするものでは無いのか、それともJpaRepositoryつかってこういうことをしないのか。
とりあえず、項目で検索結果を絞りつつ、件数を指定して読み込みをしたい場合はこれでいけますよ!