๐Ÿ“–
Kyu9's Repo
  • Library of mameil
  • ์ด์Šˆ ๊ฒฝํ—˜
    • 20230220_ํŠธ๋žœ์žญ์…˜
    • 20230306_์บ์‹ฑ์ด์Šˆ
    • 20230722_ํ…Œ์ŠคํŠธ์ฝ”๋“œ์—์„œ @Transactional
    • 20230807_deadlock
  • ์ธํ„ด ์Šคํ„ฐ๋””
    • Gradle
    • Stream, Optional, ๋žŒ๋‹ค์‹
    • JVM์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ, Garbage Collector
    • RESTful API
    • Microservice Architecture
    • HTTP
    • ์›น์„œ๋ฒ„๋ž€ ๋ฌด์—‡์ธ๊ฐ€
    • Git Branch
    • TDD
    • Redis์„ ์ด์šฉํ•œ ์บ์‹œ
    • Thymeleaf
    • ์ •๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์ž๋ฃŒ๋“ค
    • SpringBoot Management
    • ํ…Œ์Šคํฌ ์ฝ”๋“œ ๋ถ„ํ• 
  • ๋™์•„๋ฆฌ ์Šคํ„ฐ๋””
    • ๊ธฐ๋ณธ SQL ๊ณต๋ถ€
      • SQL์˜ ๊ธฐ๋ณธ ๊ฐœ๋…
      • SELECT ๋ฌธ์žฅ์„ ์ด์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ถœ๋ ฅํ•˜๊ธฐ
        • ์ง‘ํ•ฉ ์—ฐ์‚ฐ์ž ์‚ฌ์šฉํ•˜๊ธฐ
        • where์ ˆ์— ๋น„๊ต ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ
        • SELECT_EX
        • ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž ์‚ฌ์šฉํ•ด๋ณด๊ธฐ
      • ๋‹จ์ผ ํ–‰ ํ•จ์ˆ˜ ์‚ฌ์šฉ
        • lower/upper ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
        • lengthํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
        • concatํ•จ์ˆ˜ ์‚ฌ์šฉ
        • substr/mid/substring ํ•จ์ˆ˜ ์‚ฌ์šฉ
        • instrํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
        • lpad/rpad ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
        • trim/ltrim/rtrim ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
        • replace ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
        • round ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
        • truncate ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
        • modํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
        • ceilํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
        • floorํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
        • power ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
        • Date fn(๋‚ ์งœ ํ•จ์ˆ˜)
        • ํ˜• ๋ณ€ํ™˜ ํ•จ์ˆ˜
        • ์ผ๋ฐ˜ํ•จ์ˆ˜๋ž€
    • a-ha ์‹ค์Šต
    • ํ˜ผ์ž์„œ ๋งŒ๋“ค์–ด๋ณธ ๊ฒŒ์‹œํŒ
    • AWS ๊ฐ•์˜
  • ํ•™๊ต ๋‚˜๋จธ์ง€ ๊ณต๋ถ€ ์ž๋ฃŒ
    • ์›นํ”„๋ ˆ์ž„์›Œํฌ(Spring)
      • Spring์ด๋ž€?
      • Webframework1-1
      • Webframework1-2
      • SpringBoot์˜ ํŠน์ง•
      • SpringBoot ์ƒ์„ฑ ๋ฐฉ๋ฒ•
      • Spring Data JPA
      • SpringBoot Security
      • SpringBoot HATEOAS
  • ๊ณต๋ถ€ ์ž๋ฃŒ๋“ค
  • WS ์˜จ๋ผ์ธ ์ž๋ฐ” ์Šคํ„ฐ๋””
    • Week1(JVM์€ ๋ฌด์—‡์ด๋ฉฐ ์ž๋ฐ” ์ฝ”๋“œ๋Š” ์–ด๋–ป๊ฒŒ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ธ๊ฐ€.)
    • Week2(์ž๋ฐ” ๋ฐ์ดํ„ฐ ํƒ€์ž…, ๋ณ€์ˆ˜ ๊ทธ๋ฆฌ๊ณ  ๋ฐฐ์—ด)
    • Week3(์—ฐ์‚ฐ์ž)
    • Week4(์ œ์–ด๋ฌธ)
    • Week5(ํด๋ž˜์Šค)
    • Week6(์ƒ์†)
    • Week7(ํŒจํ‚ค์ง€)
    • Week8(์ธํ„ฐํŽ˜์ด์Šค)
    • Week9(์˜ˆ์™ธ์ฒ˜๋ฆฌ)
    • Week10(๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ)
    • Week11(Enum)
    • Week12(Annotation)
    • Week13(I/O)
    • Week14(Generic)
    • Week15(๋žŒ๋‹ค์‹)
  • ๋ฐฑ์ค€๋ฌธ์ œ
    • ์ž…์ถœ๋ ฅ๊ณผ ์‚ฌ์น™์—ฐ์‚ฐ
      • We love kriii(10718)
      • ๊ณ ์–‘์ด(10171)
      • ๊ฐœ(10172)
      • A+B(1000)
      • A-B(1001)
      • AxB(10998)
      • A/B(1008)
      • ์‚ฌ์น™์—ฐ์‚ฐ(10869)
      • ๋‚˜๋จธ์ง€(10430)
      • ๊ณฑ์…ˆ(2588)
    • for๋ฌธ
      • ๊ตฌ๊ตฌ๋‹จ(2739)
      • A+B - 3(10950)
      • ํ•ฉ(8393)
      • ๋น ๋ฅธ A+B(15552)
      • N ์ฐ๊ธฐ(2741)
      • ๊ธฐ์ฐ N(2742)
      • A+B - 7(11021)
      • A+B - 8(11022)
      • ๋ณ„ ์ฐ๊ธฐ - 1(2438)
      • ๋ณ„ ์ฐ๊ธฐ - 2(2439)
      • X๋ณด๋‹ค ์ž‘์€ ์ˆ˜(10871)
    • if๋ฌธ
      • ๋‘ ์ˆ˜ ๋น„๊ตํ•˜๊ธฐ(1330)
      • ์‹œํ—˜ ์„ฑ์ (9498)
      • ์œค๋…„(2753)
      • ์‚ฌ๋ถ„๋ฉด ๊ณ ๋ฅด๊ธฐ(14681)
      • ์•Œ๋žŒ ์‹œ๊ณ„(2884)
      • ์˜ค๋ธ ์‹œ๊ณ„(2525)
      • ์ฃผ์‚ฌ์œ„ ์„ธ๊ฐœ(2480)
      • ์˜์ˆ˜์ฆ(25304)
    • While๋ฌธ
      • A+B - 5(10952)
      • A+B - 4(10951)
      • ๋”ํ•˜๊ธฐ ์‚ฌ์ดํด(1110)
    • 1์ฐจ์› ๋ฐฐ์—ด
      • ์ตœ์†Œ, ์ตœ๋Œ€(10818)
      • ์ตœ๋Œ“๊ฐ’(2562)
      • ์ˆซ์ž์˜ ๊ฐœ์ˆ˜(2577)
      • ๋‚˜๋จธ์ง€(3052)
      • ํ‰๊ท (1546)
      • OXํ€ด์ฆˆ(8958)
      • ํ‰๊ท ์€ ๋„˜๊ฒ ์ง€(4344)
    • ํ•จ์ˆ˜
      • ์ •์ˆ˜N๊ฐœ์˜ ํ•ฉ(15596)
      • ์…€ํ”„ ๋„˜๋ฒ„(4673)
      • ํ•œ์ˆ˜(1065)
    • ๋ฌธ์ž์—ด
      • ์•„์Šคํ‚ค์ฝ”๋“œ(11654)
      • ์ˆซ์ž์˜ ํ•ฉ(11720)
      • ์•ŒํŒŒ๋ฒณ ์ฐพ๊ธฐ(10809)
      • ๋ฌธ์ž์—ด ๋ฐ˜๋ณต(2675)
      • ๋‹จ์–ด ๊ณต๋ถ€(1157)
      • ๋‹จ์–ด์˜ ๊ฐœ์ˆ˜(1152)
      • ์ƒ์ˆ˜(2908)
      • ๋‹ค์ด์–ผ(5622)
      • ํฌ๋กœ์•„ํ‹ฐ์•„ ์•ŒํŒŒ๋ฒณ(2941)
      • ๊ทธ๋ฃน ๋‹จ์–ด ์ฒด์ปค(1316)
    • ๊ธฐ๋ณธ์ˆ˜ํ•™-1
      • ์†์ต๋ถ„๊ธฐ์ (1712)
      • ๋ฒŒ์ง‘(2292)
      • ๋ถ„์ˆ˜์ฐพ๊ธฐ(1193)
      • ๋‹ฌํŒฝ์ด๋Š” ์˜ฌ๋ผ๊ฐ€๊ณ  ์‹ถ๋‹ค(2869)
      • ACM ํ˜ธํ…”(10250)
      • ๋ถ€๋…€ํšŒ์žฅ์ด ๋ ํ…Œ์•ผ(2775)
      • ์„คํƒ• ๋ฐฐ๋‹ฌ(2839)
      • ํฐ ์ˆ˜ A+B(10757)
      • Fly me to the Alpha Centauri(1011)
    • ๊ธฐ๋ณธ์ˆ˜ํ•™-2
      • ์†Œ์ˆ˜ ์ฐพ๊ธฐ(1978)
      • ์†Œ์ˆ˜(2581)
      • ์†Œ์ธ์ˆ˜๋ถ„ํ•ด(11653)
      • ์†Œ์ˆ˜ ๊ตฌํ•˜๊ธฐ(1929)
      • ๋ฒ ๋ฅดํŠธ์™€ ๊ณต์กด(4948)
    • ์žฌ๊ท€
      • ํ•˜๋…ธ์ด ํƒ‘ ์ด๋™ ์ˆœ์„œ(11729)
      • ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜ 5(10870)
      • ๋ณ„ ์ฐ๊ธฐ(2447)
    • ๋ธŒ๋ฃจํŠธ ํฌ์Šค
      • ๋ธ”๋ž™์žญ(2798)
      • ๋ถ„ํ•ดํ•ฉ(2231)
      • ๋ฉ์น˜(7568)
      • ์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ(1018)
      • ์˜ํ™”๊ฐ๋… ์Š˜(1436)
    • ์ง‘ํ•ฉ๊ณผ ๋งต
      • ์ˆซ์ž ์นด๋“œ(10815)
      • ๋ฌธ์ž์—ด ์ง‘ํ•ฉ(14425)
      • ์ˆซ์ž ์นด๋“œ2(10816)
      • ๋“ฃ๋ณด์žก(1764)
      • ๋Œ€์นญ ์ฐจ์ง‘ํ•ฉ(1269)
      • ์„œ๋กœ ๋‹ค๋ฅธ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด ๊ฐฏ์ˆ˜(11478)
    • ์ •๋ ฌ
      • ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ(2750)
      • ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ 2(2751)
      • ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ 3(10989)
      • ํ†ต๊ณ„ํ•™(2108)
      • ์†ŒํŠธ์ธ์‚ฌ์ด๋“œ(1427)
      • ์ขŒํ‘œ ์ •๋ ฌํ•˜๊ธฐ(11650)
      • ์ขŒํ‘œ ์ •๋ ฌํ•˜๊ธฐ2(11651)
      • ๋‹จ์–ด ์ •๋ ฌ(1181)
      • ๋‚˜์ด์ˆœ ์ •๋ ฌ(10814)
      • ์ปคํŠธ๋ผ์ธ(25305)
      • ์ขŒํ‘œ์••์ถ•(18870)
    • ๋ฐฑํŠธ๋ž˜ํ‚น
      • N๊ณผ M - 1(15649)
      • N๊ณผ M - 2(15650)
      • N๊ณผ M - 3(15651)
      • N๊ณผ M - 4(15652)
      • N-Queen(9663)
      • ์Šค๋„์ฟ (2580)
      • ์—ฐ์‚ฐ์ž ๋ผ์›Œ๋„ฃ๊ธฐ(14888)
      • ์Šคํƒ€ํŠธ์™€ ๋งํฌ(14889)
    • ์ด๋ถ„ ํƒ์ƒ‰
      • ์ˆ˜ ์ฐพ๊ธฐ(1920)
    • ๋™์ ๊ณ„ํš๋ฒ•
      • ํ”ผ๋ณด๋‚˜์น˜ ํ•จ์ˆ˜(1003)
      • ์‹ ๋‚˜๋Š” ํ•จ์ˆ˜ ์‹คํ–‰(9184)
      • 01ํƒ€์ผ(1904)
      • ํŒŒ๋„๋ฐ˜ ์ˆ˜์—ด(9461)
      • RGB๊ฑฐ๋ฆฌ(1149)
      • ์ •์ˆ˜ ์‚ผ๊ฐํ˜•(1932)
      • ๊ณ„๋‹จ ์˜ค๋ฅด๊ธฐ(2579)
      • 1๋กœ ๋งŒ๋“ค๊ธฐ(1463)
      • ์‰ฌ์šด ๊ณ„๋‹จ ์ˆ˜(10844)
      • ํฌ๋„์ฃผ ์‹œ์‹(2156)
      • ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด(11053)
      • ๊ฐ€์žฅ ๊ธด ๋ฐ”์ดํ† ๋‹‰ ๋ถ€๋ถ„ ์ˆ˜์—ด(11504)
      • ์ „๊นƒ์ค„(2565)
      • LCS(9251)
      • ์—ฐ์†ํ•ฉ(1912)
      • ํ‰๋ฒ”ํ•œ ๋ฐฐ๋‚ญ(12865)
      • ๋”ํ•˜๊ธฐ(9095)
    • DFS์™€ BFS
      • ๋ฏธ๋กœํƒ์ƒ‰(2178)
      • ๋ฐ”์ด๋Ÿฌ์Šค(2606)
      • DFS์™€ BFS(1260)
      • ๋‹จ์ง€๋ฒˆํ˜ธ๋ถ™์ด๊ธฐ(2667)
      • ์ „์Ÿ - ์ „ํˆฌ(1303)
      • ์ˆจ๋ฐ”๊ผญ์งˆ(1697)
      • ๋ฐ์Šค ๋‚˜์ดํŠธ(16948)
      • ๋‚˜์ดํŠธ์˜ ์ด๋™(7562)
      • ๋…น์ƒ‰ ์˜ท ์ž…์€ ์• ๊ฐ€ ์ ค๋‹ค์ง€?(4485)
      • ์Œ์‹๋ฌผ ํ”ผํ•˜๊ธฐ(1743)
      • A->B (16953)
      • ์ˆจ๋ฐ”๊ผญ์งˆ 3(13549)
      • ์ˆจ๋ฐ”๊ผญ์งˆ 2(12851)
    • ๊ตฌํ˜„
      • ์น˜์ฆˆ(2636)
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฌธ์ œ
    • SQL
      • Animal Table - Oracle
      • Animal Table - MySQL
      • Animal Table2 - Oracle
      • Animal Table 3,4 - Oracle
    • Lv1
      • ๋‘ ๊ฐœ ๋ฝ‘์•„์„œ ๋”ํ•˜๊ธฐ
      • ์ œ์ผ ์ž‘์€ ์ˆ˜ ์ œ๊ฑฐํ•˜๊ธฐ
      • ๋ฌธ์ž์—ด ๋‚ด p์™€ y์˜ ๊ฐœ์ˆ˜
      • ์˜ˆ์‚ฐ
      • ์ž๋ฆฟ์ˆ˜ ๋”ํ•˜๊ธฐ
      • ๋‘ ์ •์ˆ˜ ์‚ฌ์ด์˜ ํ•ฉ
      • ๊ฐ™์€ ์ˆซ์ž๋Š” ์‹ซ์–ด
      • ๊ฐ€์šด๋ฐ ๊ธ€์ž ๊ฐ€์ ธ์˜ค๊ธฐ
      • ์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜?
      • ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์ˆซ์ž ๋ฐฐ์—ด
      • 2016๋…„
      • ํฐ์บฃ๋ชฌ
      • ์„œ์šธ์—์„œ ๊น€์„œ๋ฐฉ ์ฐพ๊ธฐ
      • ๋ฌธ์ž์—ด์„ ์ •์ˆ˜๋กœ ๋ฐ”๊พธ๊ธฐ
      • ์†Œ์ˆ˜ ๋งŒ๋“ค๊ธฐ
      • ๋ฌธ์ž์—ด ๋‹ค๋ฃจ๊ธฐ ๊ธฐ๋ณธ
      • ์†Œ์ˆ˜ ์ฐพ๊ธฐ(์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด)
      • ์ˆซ์ž ๋ฌธ์ž์—ด๊ณผ ์˜๋‹จ์–ด
      • ์ด์ƒํ•œ ๋ฌธ์ž ๋งŒ๋“ค๊ธฐ
      • ์—†๋Š” ์ˆซ์ž ๋”ํ•˜๊ธฐ
      • ๋ฌธ์ž์—ด ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ
      • ๋ฌธ์ž์—ด ๋‚ด ๋งˆ์Œ๋Œ€๋กœ ์ •๋ ฌํ•˜๊ธฐ
      • ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜์™€ ๋ง์…ˆ
      • ์ฝœ๋ผ์ธ  ์ถ”์ธก
      • ์ž์—ฐ์ˆ˜ ๋’ค์ง‘์–ด ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค๊ธฐ
      • ์‹ ๊ทœ ์•„์ด๋”” ์ถ”์ฒœ
      • ๋น„๋ฐ€์ง€๋„
      • ํฌ๋ ˆ์ธ ์ธํ˜•๋ฝ‘๊ธฐ ๊ฒŒ์ž„
      • ์‹คํŒจ์œจ
      • ๋กœ๋˜์˜ ์ตœ๊ณ  ์ˆœ์œ„์™€ ์ตœ์ € ์ˆœ์œ„
      • ํ‚คํŒจ๋“œ ๋ˆ„๋ฅด๊ธฐ
      • ์ •์ˆ˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ
    • Lv2
      • ํ–‰๋ ฌ์˜ ๊ณฑ์…ˆ
      • ์˜์–ด ๋๋ง์ž‡๊ธฐ
      • ์˜์–ด ๋๋ง์ž‡๊ธฐ
      • N๊ฐœ์˜ ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜
      • ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜
      • 124 ๋‚˜๋ผ์˜ ์ˆซ์ž
      • ์ง์ง€์–ด ์ œ๊ฑฐํ•˜๊ธฐ
      • ํ”„๋ฆฐํ„ฐ
      • ๋‹ค์Œ ํฐ ์ˆซ์ž
      • ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’
      • ์ตœ์†Œ๊ฐ’ ๋งŒ๋“ค๊ธฐ
      • ์ˆซ์ž์˜ ํ‘œํ˜„
      • JadenCase ๋ฌธ์ž์—ด ๋งŒ๋“ค๊ธฐ
      • ์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉ
      • ์˜์–ด ๋๋ง์ž‡๊ธฐ
      • ๋ฉ€์ฉกํ•œ ์‚ฌ๊ฐํ˜•
      • ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ
      • ์œ„์žฅ
      • ๊ธฐ๋Šฅ๊ฐœ๋ฐœ
      • ๋” ๋งต๊ฒŒ
      • ์Šคํ‚ฌํŠธ๋ฆฌ
    • ์™„์ „ํƒ์ƒ‰
      • ๋ชจ์˜๊ณ ์‚ฌ(Lv1)
      • ์นดํŽซ(Lv2)
      • ์†Œ์ˆ˜ ์ฐพ๊ธฐ(Lv2)
    • ์ •๋ ฌ(Sorting)
      • K๋ฒˆ์งธ ์ˆ˜(Lv1)
      • ๊ฐ€์žฅ ํฐ ์ˆ˜(Lv2)
      • H-Index(Lv2)
    • ํ•ด์‹œ(Hash)
      • ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜(Lv1)
      • ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก(Lv2)
    • ํƒ์š•๋ฒ•(Greedy)
      • ์ฒด์œก๋ณต(Lv1)
      • ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ(Lv2)
      • ๊ตฌ๋ช…๋ณดํŠธ(Lv2)
    • ๋™์ ๊ณ„ํš๋ฒ•(DP)
      • ์ •์ˆ˜ ์‚ผ๊ฐํ˜•(Lv3)
    • ๊นŠ์ด/๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(DFS/BFS)
      • ํƒ€๊ฒŸ ๋„˜๋ฒ„(Lv2)
      • ๋„คํŠธ์›Œํฌ(Lv3)
      • ๋‹จ์–ด ๋ณ€ํ™˜(Lv3)
  • ์Šคํ”„๋ง๋ถ€ํŠธ ์ฑ…
    • Day 1
    • Day 2
    • Day 3
    • Day 4
    • Day 5
    • Day 6
    • Day 7
    • Day 8
    • Day 9
    • Day 10
    • Day 11
    • Day 12
    • Day 13
    • Day 14
    • Day 15
    • Day 16
    • Day 17
  • JPA ์ฑ…
    • ํ”„๋กœ์ ํŠธ ์„ธํŒ… ๋ฐ ๊ธฐ๋ณธ์„ค์ •
    • ์˜์†์„ฑ ๊ด€๋ฆฌ ๊ฐœ๋…
    • ์—”ํ‹ฐํ‹ฐ ๋งคํ•‘
      • ์‹ค์Šต ์˜ˆ์ œ
    • ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘ ๊ธฐ์ดˆ
      • ์‹ค์Šต ์˜ˆ์ œ
    • ๋‹ค์–‘ํ•œ ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘
      • ๋‹ค๋Œ€์ผ, ์ผ๋Œ€๋‹ค ๊ด€๊ณ„
      • ์ผ๋Œ€์ผ, ๋‹ค๋Œ€๋‹ค ๊ด€๊ณ„
      • ์‹ค์Šต ์˜ˆ์ œ
    • ๊ณ ๊ธ‰ ๋งคํ•‘
      • ์ƒ์† ๊ด€๊ณ„ ๋งคํ•‘
      • @MappedSuperclass
      • ๋ณตํ•ฉ ํ‚ค์™€ ์‹๋ณ„ ๊ด€๊ณ„ ๋งคํ•‘
      • ์กฐ์ธ ํ…Œ์ด๋ธ”
    • ํ”„๋ก์‹œ์™€ ์—ฐ๊ด€๊ด€๊ณ„ ๊ด€๋ฆฌ
      • ํ”„๋ก์‹œ
      • ์ฆ‰์‹œ ๋กœ๋”ฉ๊ณผ ์ง€์—ฐ ๋กœ๋”ฉ
      • ์˜์†์„ฑ ์ „์ด, ๊ณ ์•„ ๊ฐ์ฒด
    • ๊ฐ’ ํƒ€์ž…
      • ์ž„๋ฒ ๋””๋“œ ํƒ€์ž…
      • ๊ฐ’ ํƒ€์ž…๊ณผ ๋ถˆ๋ณ€ ๊ฐ์ฒด
      • ๊ฐ’ ํƒ€์ž…์˜ ๋น„๊ต, ์ปฌ๋ ‰์…˜
    • ๊ฐ์ฒด์ง€ํ–ฅ ์ฟผ๋ฆฌ ์–ธ์–ด
      • JPQL part1
      • JPQL part2
      • JPQL part3
      • QueryDSL
      • NativeSQL
      • ๊ฐ์ฒด์ง€ํ–ฅ ์ฟผ๋ฆฌ ์‹ฌํ™”
    • ์‘์šฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
      • ์—”ํ‹ฐํ‹ฐ ์„ค์ •
    • ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA
      • ๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค
  • Kotlin In Action
    • ์ฝ”ํ‹€๋ฆฐ์˜ ํŠน์ง•
    • ์ฝ”ํ‹€๋ฆฐ์˜ ๊ธฐ์ดˆ
    • ํ•จ์ˆ˜ ์ •์˜์™€ ํ˜ธ์ถœ
    • ํด๋ž˜์Šค, ๊ฐ์ฒด, ์ธํ„ฐํŽ˜์ด์Šค
    • ๋žŒ๋‹ค ๋ฐฉ์‹
    • ์ฝ”ํ‹€๋ฆฐ ํƒ€์ž… ์‹œ์Šคํ…œ
    • ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ๊ณผ ๊ธฐํƒ€ ๊ด€๋ก€
    • ๊ณ ์ฐจํ•จ์ˆ˜
    • ์ œ๋„ค๋ฆญ์Šค
    • ์• ๋…ธํ…Œ์ด์…˜๊ณผ ๋ฆฌํ”Œ๋ ‰์…˜
    • ์ฝ”๋ฃจํ‹ด
  • Oracle
    • Oracle ๊ธฐ๋ณธ
    • Oracle ์‹ฌํ™”
  • SQL_์—ฐ์Šต
    • Revising the Select Query
    • Basic Select
    • Advanced Select
    • Basic Select 2
  • SQL ์ฒซ๊ฑธ์Œ(์ฑ…)
    • Day 1
    • Day 2
    • Day 3
    • Day 4
    • Day 5
    • Day 6
    • Day 7
    • Day 8
    • Day 9
    • Day 10
    • Day 11
    • Day 12
    • Day 13
    • Day 14
    • Day 15
    • Day 16
    • Day 17
    • Day 18
    • Day 19
    • Day 20
    • Day 21
    • Day 22
    • Day 23
    • Day 24
    • Day 25
    • Day 26
    • Day 27
    • Day 28
    • Day 29
    • Day 30
  • ๋” ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•
    • JVM ์ดํ•ดํ•˜๊ธฐ
    • ๋ฐ”์ดํŠธ์ฝ”๋“œ ์กฐ์ž‘
    • ๋ฆฌํ”Œ๋ ‰์…˜
    • ๋‹ค์ด๋‚˜๋ฏน ํ”„๋ก์‹œ
    • ์• ๋…ธํ…Œ์ด์…˜ ํ”„๋กœ์„ธ์„œ
  • ๋” ์ž๋ฐ”, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•
    • JUnit5
    • Mockito
    • ๋„์ปค์™€ ํ…Œ์ŠคํŠธ
    • ์„ฑ๋Šฅ, ์šด์˜์ด์Šˆ, ์•„ํ‚คํ…์ฒ˜ ํ…Œ์ŠคํŠธ
  • ์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”
    • item1 - ์ƒ์„ฑ์ž ๋Œ€์‹  ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ณ ๋ คํ•˜๋ผ
    • item2 - ์ƒ์„ฑ์ž์— ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋งŽ๋‹ค๋ฉด ๋นŒ๋”๋ฅผ ๊ณ ๋ คํ•˜๋ผ
    • item3 - ์ƒ์„ฑ์ž๋‚˜ ์—ด๊ฑฐํƒ€์ž…์œผ๋กœ ์‹ฑ๊ธ€ํ„ด์ž„์„ ๋ณด์ฆํ•˜๋ผ
    • item4 - ์ธ์Šคํ„ด์Šคํ™”๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด์„  private ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ผ
    • item5 - ์ž์›์„ ์ง์ ‘ ๋ช…์‹œํ•˜์ง€ ๋ง๊ณ  ์˜์กด ๊ฐ์ฒด ์ฃผ์ž…์„ ์‚ฌ์šฉํ•˜๋ผ
    • item6 - ๋ถˆํ•„์š”ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ์„ ํ”ผํ•˜๋ผ
    • item7 - ๋‹ค ์“ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํ•ด์ œํ•˜๋ผ
    • item8 - finalizer์™€ cleaner ์‚ฌ์šฉ์„ ํ”ผํ•˜๋ผ
    • item9 - try-finally ๋ณด๋‹ค try-with-resources์„ ์‚ฌ์šฉํ•˜๋ผ
    • item10 - equals๋Š” ์ผ๋ฐ˜ ๊ทœ์•ฝ์„ ์ง€์ผœ ์žฌ์ •์˜ํ•˜๋ผ
    • item11 - equals์„ ์žฌ์ •์˜ํ•˜๋ ค๋ฉด hashCode๋„ ์žฌ์ •์˜ํ•˜๋ผ
    • item12 - toString์„ ํ•ญ์ƒ ์žฌ์ •์˜ํ•˜๋ผ
    • item13 - clone ์žฌ์ •์˜๋Š” ์ฃผ์˜ํ•ด์„œ ์ง„ํ–‰ํ•˜๋ผ
    • item14 - Comparable์„ ๊ตฌํ˜„ํ• ์ง€ ๊ณ ๋ฏผํ•˜๋ผ
  • Elastic Search
    • ๊ฐ•์˜ Summary
    • Elastic Summary ๊ฐœ๋… ์ •๋ฆฌ
    • Elastic Summary ์ ์šฉ ์ •๋ฆฌ
  • ํ† ๋น„์˜ ์Šคํ”„๋ง ๊ฐ•์˜
    • ์Šคํ”„๋ง๋ถ€ํŠธ ์‚ดํŽด๋ณด๊ธฐ
    • ๋…๋ฆฝ ์‹คํ–‰ํ˜• ์„œ๋ธ”๋ฆฟ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
  • k8s
    • minikube ์„ค์น˜
    • jenkins ์ถ”๊ฐ€
  • Article
    • Choosing the Right MessageBroker
Powered by GitBook
On this page
  • ์‚ฌ์šฉ ๋ฐฉ๋ฒ•
  • ๊ฒ€์ƒ‰ ์กฐ๊ฑด ์ฟผ๋ฆฌ
  • ๊ฒฐ๊ณผ ์กฐํšŒ
  • ํŽ˜์ด์ง•, ์ •๋ ฌ
  • ๊ทธ๋ฃน
  • ์กฐ์ธ
  • ์„œ๋ธŒ ์ฟผ๋ฆฌ
  • ํ”„๋กœ์ ์…˜๊ณผ ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜
  • ์ˆ˜์ •, ์‚ญ์ œ ๋ฐฐ์น˜ ์ฟผ๋ฆฌ
  • ๋™์  ์ฟผ๋ฆฌ
  • ๋ฉ”์†Œ๋“œ ์œ„์ž„
  • QueryDSL ์ •๋ฆฌ

Was this helpful?

  1. JPA ์ฑ…
  2. ๊ฐ์ฒด์ง€ํ–ฅ ์ฟผ๋ฆฌ ์–ธ์–ด

QueryDSL

QueryDSL์€ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ์ด๊ณ  ๋‹ค์ˆ˜์˜ ํ”„๋กœ์ ํŠธ์—์„œ ์ง€์›๋˜๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์ด๋‹ค ์ด๊ฒŒ ๋ญ”๊ฐ€ -> jpql์„ ์‚ฌ์šฉํ•ด์„œ ์ฟผ๋ฆฌ ์ฆ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š”๋ฐ ๊ธฐ๋Šฅ์ด ํŠนํ™”๋˜์–ด ์žˆ๋Š” ํ”„๋กœ์ ํŠธ

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฃผ์ž…๋ฐ›์•„์•ผ ํ•จ querydsl-jpa : QueryDSL JPA ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ querydsl-apt : ์ฟผ๋ฆฌ ํƒ€์ž…์„ ์ƒ์„ฑํ•  ๋•Œ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—ฌ๊ธฐ์„œ ๋‚˜์˜จ 2๊ฐ€์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํ•„์ˆ˜..! ํ•„์š”ํ•  ๋•Œ ๊ตฌ๊ธ€๋งํ•ด์„œ ์„ค์น˜ํ•ด ์‚ฌ์šฉํ•˜์ž

QueryDSL์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์šฐ์„ ์ ์œผ๋กœ JPAQuery ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค ์ด๋•Œ ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €๋ฅผ ์ƒ์„ฑ์ž์—๊ฒŒ ๋„˜๊ฒจ์ค€ ๋’ค, ๋‹ค์Œ์œผ๋กœ ์‚ฌ์šฉํ•  ์ฟผ๋ฆฌ ํƒ€์ž…์„ ์ƒ์„ฑํ•˜๋Š”๋ฐ ์ƒ์„ฑ์ž์—๋Š” ๋ณ„์นญ์„ ์ฃผ๋ฉด ๋˜๊ณ , ์ด ๋ณ„์นญ์€ jpql์—์„œ ์‚ฌ์šฉํ•˜๋˜ ๋ฐฉ์‹๊ณผ ๋™์ผํ•˜๊ฒŒ ์ง„ํ–‰ํ•˜๋ฉด ๋œ๋‹ค

์ฝ”๋“œ๋กœ ํ•œ๋ฒˆ ๋ด๋ณด์ž

public void queryDSL(){
    EntityManager em = emf.createEntityManager();
    
    JPAQuery query = new JPAQuery(em);
    QMember qMember = new QMember("m");
    List<Member> members = query
                             .from(qMember)
                             .where(qMember.name.eq("ํšŒ์›1"))
                             .orderBy(qMember.name.desc())
                             .list(qMember);
}

๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ ๋ญ ์„ธํŒ…์„ ์ œ์™ธํ•˜๊ณ  ์‹ค์ œ๋กœ ์ฟผ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ๋ถ€๋ถ„์„ ๋ณด๋ฉด ๊ทธ๋ ‡๊ฒŒ ์–ด๋ ต์ง€ ์•Š๊ฒŒ sql๋ฌธ๊ณผ ๋‹ฎ์•„์žˆ๋‹ค..!

์ฟผ๋ฆฌ ํƒ€์ž…(Q) ์—ฌ๊ธฐ์„œ๋Š” QMember๋กœ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ์š”๋†ˆ์€ ์‚ฌ์šฉํ•˜๊ธฐ ํŽธ๋ฆฌํ•˜๋„๋ก ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ณด๊ด€ํ•˜๋Š”๊ฒŒ ์ข‹๊ธด ํ•˜๋‹ค ํ•˜์ง€๋งŒ ๊ฐ™์€ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์กฐ์ธํ•˜๊ฑฐ๋‚˜ ๊ฐ™์€ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์„œ๋ธŒ์ฟผ๋ฆฌ์— ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ™์€ ๋ณ„์นญ์ด ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿด๋•Œ๋Š” ๋ณ„์นญ์„ ์ง์ ‘ ์ง€์ •

๊ฒ€์ƒ‰ ์กฐ๊ฑด ์ฟผ๋ฆฌ

where์ ˆ์—์„œ ์กฐ๊ฑด๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ๋Š”๋ฐ ์ด ๋‚ด๋ถ€์—์„œ๋„ and ๋‚˜ or์™€ ๊ฐ™์ด ์ •๋ง ์ฟผ๋ฆฌ๋ฌธ์„ ์ž‘์„ฑํ•˜๋“ฏ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค

JPAQuery query = new JPAQuery(em);
QItem item = QItem.item;
List<Item> list = query.from(item)
                    .where(item.name.eq("์ข‹์€ ์ƒํ’ˆ").and(item.price.gt(20000)))
                    .list(item);

์ด๋ ‡๊ฒŒ .and, .or๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์กฐ๊ฑด์„ ๋„ฃ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ถ”๊ฐ€์ ์œผ๋กœ where(item.name.eq("์ข‹์€์ƒํ’ˆ"), item.price.gt(20000)) ์ด๋ ‡๊ฒŒ ์ถ”๊ฐ€ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œํ•˜๋ฉด and๊ฐ€ ๋จ -> ์ด์™ธ์—๋„ between, contains, startsWith๋“ฑ๋“ฑ ์ด๋ ‡๊ฒŒ ๋‹ค์–‘ํ•˜๊ฒŒ ์žˆ์œผ๋‹ˆ๊นŒ intellij, ๊ตฌ๊ธ€์˜ ๋„์›€์„ ๋ฐ›์œผ๋ฉฐ ์‚ฌ์šฉ

๊ฒฐ๊ณผ ์กฐํšŒ

์ฟผ๋ฆฌ์˜ ์ž‘์„ฑ์ด ๋๋‚˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์กฐํšŒํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ ๋งˆ์ง€๋ง‰์—๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์„ ๋ฉ”์†Œ๋“œ๋ฅผ ๋„ฃ์–ด์ค˜์•ผ ํ•œ๋‹ค ๋Œ€ํ‘œ์ ์ธ ๋ฉ”์†Œ๋“œ๋“ค

  • uniqueResult() : ์กฐํšŒ ๊ฒฐ๊ณผ๊ฐ€ ํ•˜๋‚˜์ผ ๋•Œ ์‚ฌ์šฉํ•˜๊ณ , ๋งŒ์•ฝ ์—†์œผ๋ฉด null, ๋งŒ์•ฝ ๊ฒฐ๊ณผ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์ด๋ฉด Exception

  • singleResult() : uniqueResult()์™€ ๋™์ผํ•˜์ง€๋งŒ ๋งŒ์•ฝ ๊ฒฐ๊ณผ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์ด๋ฉด ๋งจ ์•ž์—๊ฒƒ ๋ฆฌํ„ด

  • list() : ๊ฒฐ๊ณผ๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ์ผ ๋•Œ ์‚ฌ์šฉ

ํŽ˜์ด์ง•, ์ •๋ ฌ

์šฐ์„  ์ •๋ ฌ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” orderBy๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์ •๋ ฌ ๋ฐฉ์‹์„ ์ง€์ •ํ•˜๋Š”๋ฐ๋Š” asc(), desc()์„ ์ถ”๊ฐ€๋กœ ์‚ฌ์šฉ ํŽ˜์ด์ง•๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” offset๋ฉ”์†Œ๋“œ์™€ limit๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๊ดœ์ฐฎ๊ณ  restrict() ๋ฉ”์†Œ๋“œ์— ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„ฃ์–ด์ค˜๋„ ๊ฐ€๋Šฅํ•˜๋‹ค- limit, offset ์ˆœ์„œ ์‚ฌ์šฉ ์˜ˆ์‹œ๋ฅผ ๋ณด์ž

QueryModifiers queryModifiers = new QueryModifiers(20L, 10L); 
List<Item> list = query.from(item)
                     .restrict(queryModifiers)
                     .list(item);

์ด์™ธ์—๋„ ์ •๋ ฌlist๋ฅผ ๋ฝ‘์•˜์„ ๋•Œ getTotal, getLimit, getOffset, getResults์™€ ๊ฐ™์€ ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ๊ฒฐ๊ณผ๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค!

๊ทธ๋ฃน

์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” groupBy, having์„ ํ†ตํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

์กฐ์ธ

์กฐ์ธ์€ innerJoin, leftJoin, rightJoin, fullJoin ์ด๋ ‡๊ฒŒ ์กด์žฌํ•˜๊ณ  ์žˆ์œผ๋ฉฐ fetchJoin๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์กฐ์ธ์˜ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•์€ ์ฒซ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ์—์„œ ์กฐ์ธ ๋Œ€์ƒ์„ ์ง€์ •ํ•˜๊ณ  ๋‘ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ์—์„œ ๋ณ„์นญ์œผ๋กœ ์‚ฌ์šฉํ•  ์ฟผ๋ฆฌ ํƒ€์ž…์„ ์ง€์ • ์กฐ์ธ์˜ ์˜ˆ์‹œ๋ฅผ ๋ณด์ž

QOrder order = QOrder.order;
QMember member = QMember.member;
QOrderItem orderItem = QOrderItem.orderItem;

//๊ธฐ๋ณธ์ ์ธ ์กฐ์ธ
query.from(order)
    .join(order.member, member)
    .leftJoin(order.orderItem, orderItem)
    .list(order);

//on์„ ์‚ฌ์šฉํ•œ ์กฐ์ธ
query.from(order)
    .leftJoin(order.orderItem, orderItem)
    .on(orderItem.count.gt(2))
    .list(order);
    
//ํŒจ์น˜ ์กฐ์ธ์„ ์‚ฌ์šฉ
query.from(order)
    .innerJoin(order.member, member).fetch()
    .leftJoin(order.orderItems, orerItem).fetch()
    .list(order);
    
//from ์ ˆ์—์„œ ์—ฌ๋Ÿฌ ์กฐ๊ฑด ์‚ฌ์šฉ
query.from(order, member)
    .where(order.member.eq(member))
    .list(order);    

์„œ๋ธŒ ์ฟผ๋ฆฌ

์„œ๋ธŒ ์ฟผ๋ฆฌ๋Š” ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ JPASubQuery๋ฅผ ์ƒ์„ฑํ•ด์„œ ์‚ฌ์šฉํ•˜๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›๋Š”๋ฐ ์žˆ์–ด์„œ๋Š” ๊ธฐ์กด๊ณผ ๋น„์Šทํ•˜๊ฒŒ unique(), list()๋ฅผ ์‚ฌ์šฉ ์„œ๋ธŒ ์ฟผ๋ฆฌ, ๋‹ค์ˆ˜์˜ ์„œ๋ธŒ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์‹œ๋ฅผ ๋ณด์ž

QItem item = QItem.item;
QItem itemSub = new QItem("itemSub");

//๋‹จ์ผ ์„œ๋ธŒ ์ฟผ๋ฆฌ
query.from(item)
    .where(
        item.price.eq(
            new JPASubQuery().from(itemSub)
                .unique(itemSub.price.max())
        )
    )
    .list(item);
    
//์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„œ๋ธŒ ์ฟผ๋ฆฌ
query.from(item)
    .where(
        item.in(
            new JPASubQuery().from(itemSub)
                .where(item.name.eq(itemSub.name))
                .list(itemSub)
        )
    )
    .list()

ํ”„๋กœ์ ์…˜๊ณผ ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜

select ์ ˆ์— ์กฐํšŒ ๋Œ€์ƒ์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ํ”„๋กœ์ ์…˜์ด๋ผ๊ณ  ๋ถ€๋ฆ„ ๋งŒ์•ฝ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์ˆ˜์˜ ์ปฌ๋Ÿผ์œผ๋กœ ๋ฐ›๊ณ  ์‹ถ๋‹ค๋ฉด Tuple์„ ์‚ฌ์šฉํ•ด์„œ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค ๋งŒ์•ฝ ๊ฒฐ๊ณผ๋ฅผ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ํŠน์ • ๊ฐ์ฒด๋กœ ๋ฐ›๊ณ  ์‹ถ๋‹ค๋ฉด ๋นˆ ์ƒ์„ฑ์„ ํ†ตํ•ด์„œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋Ÿฌํ•œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ, ํ•„๋“œ ์ง์ ‘ ์ ‘๊ทผ, ์ƒ์„ฑ์ž ์‚ฌ์šฉ ์ด๋ ‡๊ฒŒ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋‹ค ์ถ”๊ฐ€๋กœ ๋งŒ์•ฝ distinct๋ฅผ ๋ถ™ํžˆ๊ณ  ์‹ถ๋‹ค๋ฉด query.distinct().from(ํ…Œ์ด๋ธ”)... ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉ

์ˆ˜์ •, ์‚ญ์ œ ๋ฐฐ์น˜ ์ฟผ๋ฆฌ

jpql ๋ฐฐ์น˜ ์ฟผ๋ฆฌ์™€ ๊ฐ™์ด ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ง์ ‘์ ์œผ๋กœ ์ฟผ๋ฆฌํ•œ๋‹ค๋Š” ์ ..! ๋‚˜์ค‘์— jpql ๋ฐฐ์น˜ ์ฟผ๋ฆฌ๋ฅผ ๋‹ค๋ฃฌ๋‹ค..!

๋™์  ์ฟผ๋ฆฌ

๋™์  ์ฟผ๋ฆฌ๋Š” BooleanBuilder๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํŠน์ • ์กฐ๊ฑด์— ๋”ฐ๋ฅธ ๋™์  ์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค

๋ฉ”์†Œ๋“œ ์œ„์ž„

๋ฉ”์†Œ๋“œ ์œ„์ž„์„ ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๋ฉด ์ฟผ๋ฆฌ ํƒ€์ž…์— ๊ฒ€์ƒ‰ ์กฐ๊ฑด์„ ์ง์ ‘ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค ๊ฒ€์ƒ‰ ์กฐ๊ฑด์€ ์ด๋ ‡๊ฒŒ ์ •์˜ํ•œ๋‹ค

public class ItemExpression{
    @QueryDelegate(Item.class)
    public static BooleanExpression isExpensive(QItem item, Integer price){
        return item.price.gt(price);
    }
}

์ด๋ ‡๊ฒŒ ์ผ๋‹จ ์ •์ ๋ฉ”์†Œ๋“œ๋ฅผ ๋งŒ๋“ค๊ณ , QueryDelegate์œผ๋กœ ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ง€์ •ํ•˜๊ณ  ๊ฑฐ๊ธฐ์— ์• ๋…ธํ…Œ์ด์…˜์œผ๋กœ ์ •ํ•ด์ค€๋‹ค ์ •์  ๋ฉ”์†Œ๋“œ์˜ ์ฒซ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋Œ€์ƒ ์—”ํ‹ฐํ‹ฐ์˜ ์ฟผ๋ฆฌ ํƒ€์ž…์„ ์ง€์ •ํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ํ•„์š”ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ง€์ •

QueryDSL ์ •๋ฆฌ

๋ฌธ์ž๊ฐ€ ์•„๋‹Œ ์ฝ”๋“œ๋กœ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ, ๋ณต์žกํ•œ ๋™์  ์ฟผ๋ฆฌ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•˜๋ƒ์—์„œ ์ •๋ง ์ข‹์€ ๋‹ต์•ˆ์„ ์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค!! ๊ทธ๋ฆฌ๊ณ  ๊ฒฐ๊ตญ์€ ์ปดํŒŒ์ผ๋Ÿฌ์˜ ํ™•์ธ์„ ๋ฐ›๊ณ  ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ๋„ ํ•˜๋ฉด์„œ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ ide์˜ ๋„์›€๋„ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ „ํ•˜๊ฒŒ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ์— ์œ ์šฉํ•˜๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค

<br

PreviousJPQL part3NextNativeSQL

Last updated 3 years ago

Was this helpful?