質問内容
下記を前提と致します。
・webアプリを対象としています
・コーティングの方法ではなく、各項目に対する認識や理解の部分についてお尋ねしております
- インターフェースのメソッドについて
JpaRepmsitoryなどのインターフェース(上位のインターフェース含む)に定義されたメソッド(find,save等)の処理内容は何処にあるのでしょうか?
今の私の理解度だと、JpaRepmsitoryを実装した具象クラスがどこかにあり、そのクラスに処理内容が定義されていると思っているのですがこの点は間違いないでしょうか?
(インターフェースについて上記理解で間違い無いかの確証が欲しいです)
- find()について
find...By...()はインターフェース側にメソッド定義するだけで、条件指定の検索が行えますが、どうやってこれが実現されているのかさっぱりわかりません。
メソッド名から文字抽出して、処理に反映させるなんてことが出来るのでしょうか?
- Page<T>について
ページネーションを実現する際に使用していますが、感覚としてListなどのコレクションにページ番号などのフィールドが定義されたようなものといった認識でも良いのでしょうか?
また、画面の各ページリンクからControllerへ遷移する時、一緒にリクエストパラメータにページ番号を付けて送りますが、受取側のControllerに受け取る為の変数を用意していないのに、ページが正常に切り替わります。Page<T>実装クラスが勝手に受け取っているのでしょうが、具体的にどの様に実現されているのでしょうか?
昨日からspringを業務で使う様になりましたが、初めて目にするものばかりで理解が追いついておりません。
初歩的な質問ばかりではありますが何卒宜しくお願い致します。
Page<T>について(自己解決)
・Pageは、<T>オブジェクトリスト(Listでは無い)のサブリストである。Listのget/addの様に1つの要素にアクセスする方法があるのかは分からないが、Iterable<T>インターフェースを継承しているため、for-eachでアクセスは可能である。
・RDBからPageを取得するイメージとして、まずJPAなどにより検索条件に合致した(もしくは全レコード)仮のリスト(ORM)を取得して、このリストから指定したページ情報分のPageを作成する?
リクエストパラメータのページ情報について(Pageable)
結論として、コントローラの引数に指定していたPageableが勝手に取得してくれていた。PageableはPage関連のページ情報を受渡しするオブジェクトであり、実装クラスとしてPageRequestがある。
Pageableが取得してくれるリクエストパラメータは決まっており、
"page","size","sort"などがある。
回答1件
あなたの回答
tips
プレビュー