|
| 1 | +- Spring Data JPAμ Paging |
| 2 | + |
| 3 | + *Spring Data JPAλ **νμ΄μ§**μ μν΄ λ κ°μ§ κ°μ²΄λ₯Ό μ 곡νλλ° μ΄κ²μ΄ λ°λ‘ Sliceμ Page* |
| 4 | + |
| 5 | + **νμ΄μ§** |
| 6 | + |
| 7 | + : μ¬μ©μκ° μ΄λ ν λ°μ΄ν°λ₯Ό μμ²νμ λ, μ 체 λ°μ΄ν° μ€ μΌλΆλ₯Ό μνλ μ λ ¬ λ°©μμΌλ‘ 보μ¬μ£Όλ λ°©μ |
| 8 | + |
| 9 | + **νμ΄μ§μ μ μ© λ°©λ²** |
| 10 | + |
| 11 | + νμ΄μ§ κΈ°λ² κ΅¬νμ μν΄ κΈ°λ³Έμ μΌλ‘ μμμΌ νλ νλΌλ―Έν°λ€μ΄ μμ΅λλ€. |
| 12 | + |
| 13 | + - **page**Β : νμ΄μ§ κΈ°λ²μ΄ μ μ©λμμ λ, μνλ νμ΄μ§ |
| 14 | + - **size**Β : ν΄λΉ νμ΄μ§μ λ΄μ λ°μ΄ν° κ°μ |
| 15 | + - **sort**Β : μ λ ¬ κΈ°μ€ |
| 16 | + |
| 17 | + μ΄ νλΌλ―Έν°λ€μ Pageable ꡬν체μ λ΄μ νμ΄μ§μ μ€μ |
| 18 | + |
| 19 | + - Page |
| 20 | + |
| 21 | + Pagebleμ νλΌλ―Έν°λ‘νμ¬ κ°μ Έμ¨ κ²°κ³Όλ¬ΌμΒ `Page<SomeObject>`Β ννλ‘ λ°ν λλ©°, Pageλ₯Ό μ¬μ©νλ€λ©΄ λλΆλΆ λ€μμ rowλ₯Ό κ°μ Έμ€κΈ° λλ¬ΈμΒ `Page<List<SomeObject>>`μ ννλ‘ λ°νμ νλ€. μ΄ νμ΄μ§ κ°μ²΄μλ Paginationμ ꡬνν λ μ¬μ©νλ©΄ μ’μ λ©μλκ° μμΌλ©° μ΄λ λ€μκ³Ό κ°λ€. |
| 22 | + |
| 23 | + ### getTotalElements() |
| 24 | + |
| 25 | + 쿼리 κ²°κ³Όλ¬Όμ μ 체 λ°μ΄ν° κ°μμ΄λ€. μ¦, Pageableμ μν΄Β `limit`ν€μλκ° μ‘°κ±΄μΌλ‘ λ€μ΄κ°μ§ μλ 쿼리 **κ²°κ³Όμ μ**Β μΈλ°, μ£Όμν΄μΌ ν μ μ 쿼리 **κ²°κ³Όμ κ°―μλ§**Β κ°μ Έμ€μ§Β **μ 체 λ°μ΄ν°λ₯Ό κ°μ Έμ€μ§ μλλ€**λ μ μ΄λ€. |
| 26 | + |
| 27 | + μ΄ λ©μλλ κ²μν κΈ°λ₯ μ¬μ©μμκ² μ 체 λ°μ΄ν° κ°μλ₯Ό μλ €μ£Όλ λ±μ μ¬μ©νκΈ° μ’λ€. |
| 28 | + |
| 29 | + ### getTotalPages() |
| 30 | + |
| 31 | + 쿼리λ₯Ό ν΅ν΄ κ°μ Έμ¨ μμλ€μ sizeν¬κΈ°μ λ§μΆ° νμ΄μ§νμμ λ λμ€λ μ΄ νμ΄μ§μ κ°―μμ΄λ€. |
| 32 | + |
| 33 | + μ΄λ₯Ό νμ©ν΄ μ½κ² νμ΄μ§ λ²νΌμ μμ±μ΄ κ°λ₯νλ€. |
| 34 | + |
| 35 | + ### getSize() |
| 36 | + |
| 37 | + 쿼리λ₯Ό μνν μ 체 λ°μ΄ν°μ λν΄ μΌμ μ λ§νΌ λλ νμ΄μ§λ₯Ό ꡬμ±νλλ°, μ΄ μΌμ μμ ν¬κΈ°μ΄λ€. |
| 38 | + |
| 39 | + ### getNumber() |
| 40 | + |
| 41 | + μμλ₯Ό κ°μ Έμ¨ νμ΄μ§μ λ²νΈλ₯Ό μλ―Ένλ€. |
| 42 | + |
| 43 | + ### getNumberOfElements() |
| 44 | + |
| 45 | + νμ΄μ§μ μ‘΄μ¬νλ μμμ κ°μμ΄λ€. μ΅λ sizeμ μ λ§νΌ λμ¬ μ μλ€. |
| 46 | + |
| 47 | + - Slice |
| 48 | + - **λ€μ μ¬λΌμ΄μ€ μ‘΄μ¬ μ¬λΆ** |
| 49 | + - μμ²ν νμ΄μ§ ν¬κΈ°λ³΄λ€ `+1` λ§νΌ λ μ‘°νν΄ λ³΄κ³ , κ·Έ κ²°κ³Όλ‘ `hasNext()` νλ¨ |
| 50 | + - **λ©μλ** |
| 51 | + - `List<T> getContent()` |
| 52 | + - `boolean hasNext()` |
| 53 | + - `boolean hasPrevious()` |
| 54 | + - `Pageable getPageable()`, `Pageable nextPageable()` |
| 55 | + - **μ₯μ ** |
| 56 | + - **count 쿼리 μλ΅** β λΉ λ₯Έ μλ΅ |
| 57 | + - **λ¨μ ** |
| 58 | + - μ 체 건μΒ·μ 체 νμ΄μ§ μ μ λ³΄κ° νμν λ μ¬μ© λΆκ° |
| 59 | +- κ°μ²΄ κ·Έλν νμ |
| 60 | + - **κ°μ²΄(node)**: JPA μν°ν° ν΄λμ€ νλνλ |
| 61 | + - **μ°κ΄(edge)**: @OneToMany, @ManyToOneμ κ°μ νλ λ§€ν |
| 62 | + - μ΄ λμ΄ μ°κ²°λμ΄ λ§μΉ **νΈλ¦¬(tree)** λλ **λ€νΈμν¬(graph)**μ²λΌ μ΄λ£¨μ΄μ§ ꡬ쑰 |
| 63 | + |
| 64 | +  |
| 65 | + |
| 66 | + **κ°μ²΄ κ·Έλν νμμ μμ** |
| 67 | + |
| 68 | + - **λ‘λ© μ λ΅ (FetchType)** |
| 69 | + - **EAGER**: μ°κ΄λ μν°ν°λ₯Ό μ¦μ ν¨κ» μ‘°ν |
| 70 | + - **LAZY**: μ€μ μ¬μ©ν λ(νλ νΈμΆ μ) μ‘°ν |
| 71 | + - **μμμ± μ»¨ν
μ€νΈ (Persistence Context)** |
| 72 | + - νλ² λ‘λλ μν°ν°λ 1μ°¨ μΊμμ λ³΄κ΄ |
| 73 | + - λμΌ νΈλμμ
λ΄μ λ€μ μ‘°ννλ©΄ 1μ°¨ μΊμμμ λ°ν β μ€λ³΅ 쿼리 λ°©μ§ |
| 74 | + - **νλ‘μ (Proxy)** |
| 75 | + - LAZY μ°κ΄κ΄κ³μΌ λ, μ€μ μν°ν° λμ κ°μ§ κ°μ²΄λ₯Ό 미리 λ§λ€μ΄ λκ³ |
| 76 | + - μ κ·Ό μμ μ μ€μ λ°μ΄ν°λ₯Ό μ‘°ν |
0 commit comments