JPQL

๊ฒฝ๋กœ ํ‘œํ˜„์‹

.(์ )์„ ์ฐ์–ด ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ

  • ์ƒํƒœ ํ•„๋“œ : ๋‹จ์ˆœํžˆ ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ํ•„๋“œ

  • ์—ฐ๊ด€ ํ•„๋“œ : ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ์œ„ํ•œ ํ•„๋“œ, ์ž„๋ฒ ๋””๋“œ ํƒ€์ž… ํฌํ•จ

    • ๋‹จ์ผ ๊ฐ’ ์—ฐ๊ด€ ํ•„๋“œ : @ManyToOne, @OneToOne, ๋Œ€์ƒ์ด ์—”ํ‹ฐํ‹ฐ

    • ์ปฌ๋ ‰์…˜ ๊ฐ’ ์—ฐ๊ด€ ํ•„๋“œ : @OneToMany, @ManyToMany, ๋Œ€์ƒ์ด ์ปฌ๋ ‰์…˜

ํŠน์ง•

  • ์ƒํƒœ ํ•„๋“œ ๊ฒฝ๋กœ : ๊ฒฝ๋กœ ํƒ์ƒ‰์˜ ๋์ด๋‹ค. ๋” ์ด์ƒ ํƒ์ƒ‰ํ•  ์ˆ˜ ์—†๋‹ค.

  • ๋‹จ์ผ ๊ฐ’ ์—ฐ๊ด€ ๊ฒฝ๋กœ : ๋ฌต์‹œ์  ๋‚ด๋ถ€ ์กฐ์ธ์ด ๋ฐœ์ƒํ•œ๋‹ค. ๊ณ„์† ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์ปฌ๋ ‰์…˜ ๊ฐ’ ์—ฐ๊ด€ ๊ฒฝ๋กœ : ๋ฌต์‹œ์  ๋‚ด๋ถ€ ์กฐ์ธ์ด ๋ฐœ์ƒํ•œ๋‹ค. ๋” ์ด์ƒ ํƒ์ƒ‰ํ•  ์ˆ˜ ์—†๋‹ค.

    • FROM ์ ˆ์—์„œ ๋ช…์‹œ์  ์กฐ์ธ์„ ํ†ตํ•ด ๋ณ„์นญ์„ ์–ป์œผ๋ฉด ๋ณ„์นญ์„ ํ†ตํ•ด ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

    • select t.members.name form Team t ์‹คํŒจํ•œ๋‹ค.

    • select m.name from Team t join t.members m ์„ฑ๊ณตํ•œ๋‹ค.

  • ๋ช…์‹œ์  ์กฐ์ธ : JOIN์„ ์ง์ ‘ ์ ์–ด์ค€๋‹ค.

    • select m from Member m join m.team t

  • ๋ฌต์‹œ์  ์กฐ์ธ : ๊ฒฝ๋กœ ํ‘œํ˜„์‹์— ์˜ํ•ด ๋ฌต์‹œ์ ์œผ๋กœ ์กฐ์ธ์ด ์ผ์–ด๋‚œ๋‹ค. ๋‚ด๋ถ€ ์กฐ์ธ๋งŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

    • select m.team from Member m

๊ฐ€๊ธ‰์  ๋ฌต์‹œ์  ์กฐ์ธ ๋Œ€์‹ ์— ๋ช…์‹œ์  ์กฐ์ธ์„ ์‚ฌ์šฉํ•˜์ž. ๋ฌต์‹œ์  ์กฐ์ธ์€ ์กฐ์ธ์ด ์ผ์–ด๋‚˜๋Š” ์ƒํ™ฉ์„ ํ•œ๋ˆˆ์— ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ต๋‹ค.

ํŽ˜์น˜ ์กฐ์ธ

SQL์˜ ์กฐ์ธ ์ข…๋ฅ˜๋Š” ์•„๋‹ˆ๊ณ  JPQL์—์„œ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

์—ฐ๊ด€๋œ ์—”ํ‹ฐํ‹ฐ๋‚˜ ์ปฌ๋ ‰์…˜์„ ํ•œ ๋ฒˆ์— ๊ฐ™์ด ์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

  • ์—”ํ‹ฐํ‹ฐ ํŽ˜์น˜ ์กฐ์ธ

join fetch์—†์ด select m from Member m์ธ ์ƒํƒœ์—์„œ ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰์„ ํ•˜๋ฉด ์ง€์—ฐ๋กœ๋”ฉ(LAZY)์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•  ๋•Œ๋งˆ๋‹ค ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฌ๊ฒŒ ๋œ๋‹ค. ์ด ๋•Œ N + 1๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.(ํšŒ์›์„ selectํ•˜๋Š” ์ฟผ๋ฆฌ ์‹คํ–‰(1)์— ์—ฐ๊ด€๋œ ํŒ€๋งˆ๋‹ค N๋ฒˆ select ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.)

ํ•˜์ง€๋งŒ ํŽ˜์น˜ ์กฐ์ธ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ง€์—ฐ๋กœ๋”ฉ์œผ๋กœ ์„ค์ • ๋˜์–ด์žˆ๋‹ค ํ•ด๋„ ํšŒ์›๊ณผ ์—ฐ๊ด€๋œ ํŒ€ ์—”ํ‹ฐํ‹ฐ๋Š” ํ”„๋ก์‹œ๊ฐ€ ์•„๋‹Œ ์‹ค์ œ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค.

  • ์ปฌ๋ ‰์…˜ ํŽ˜์น˜ ์กฐ์ธ

์ผ๋Œ€๋‹ค ๊ด€๊ณ„๋ฅผ ์กฐํšŒํ•  ๋•Œ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํ›จ์”ฌ ๋งŽ์ด ์กฐํšŒ๋  ์ˆ˜๋„ ์žˆ๋‹ค.

ํ•˜์ด๋ฒ„๋„ค์ดํŠธ6 ๋ถ€ํ„ฐ๋Š” distinct ์ž๋™ ์ ์šฉ๋œ๋‹ค.

ํŽ˜์น˜ ์กฐ์ธ์˜ ํ•œ๊ณ„

  • ํŽ˜์น˜ ์กฐ์ธ ๋Œ€์ƒ์—๋Š” ๋ณ„์นญ์„ ์ค„ ์ˆ˜ ์—†๋‹ค.

    • JPA ํ‘œ์ค€์—์„œ๋Š” ์ง€์›ํ•˜์ง€ ์•Š์ง€๋งŒ ํ•˜์ด๋ฒ„๋„ค์ดํŠธ์—์„œ๋Š” ์ง€์›ํ•œ๋‹ค. ๋ณ„์นญ์„ ์ž˜๋ชป ์‚ฌ์šฉํ•˜๋ฉด ์—ฐ๊ด€๋œ ๋ฐ์ดํ„ฐ ์ˆ˜๊ฐ€ ๋‹ฌ๋ผ์ ธ์„œ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์ด ๊นจ์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์กฐ์‹ฌํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.(๊ฐ€๊ธ‰์  ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ๋œ๋‹ค.)

  • ๋‘˜ ์ด์ƒ์˜ ์ปฌ๋ ‰์…˜์€ ํŽ˜์น˜ ์กฐ์ธ ํ•  ์ˆ˜ ์—†๋‹ค.

    • ์ปฌ๋ ‰์…˜ * ์ปฌ๋ ‰์…˜์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์นดํ…Œ์‹œ์•ˆ ๊ณฑ์ด ๋งŒ๋“ค์–ด์ง„๋‹ค.

  • ์ปฌ๋ ‰์…˜์„ ํŽ˜์น˜ ์กฐ์ธํ•˜๋ฉด ํŽ˜์ด์ง• API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

    • ์ผ๋Œ€์ผ, ๋‹ค๋Œ€์ผ ๊ฐ™์€ ๋‹จ์ผ ๊ฐ’ ์—ฐ๊ด€ ํ•„๋“œ๋“ค์€ ํŽ˜์น˜ ์กฐ์ธํ•ด๋„ ํŽ˜์ด์ง•์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

    • ํ•˜์ด๋ฒ„๋„ค์ดํŠธ๋Š” ์ปฌ๋ ‰์…˜์„ ํŽ˜์ง€ ์กฐ์ธํ•˜๊ณ  ํŽ˜์ด์ง•์„ ํ•˜๋ฉด ๊ฒฝ๊ณ  ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธฐ๋ฉด์„œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ๋ฅผ ํ•œ๋‹ค.(๋งค์šฐ ์œ„ํ—˜ํ•˜๋‹ค.)

    • ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ๋ฐฉํ–ฅ์„ ๋ฐ˜๋Œ€๋กœ ํ•˜๊ฑฐ๋‚˜ @BatchSize๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

ํŽ˜์น˜ ์กฐ์ธ์„ ์‚ฌ์šฉํ•˜๋ฉด SQL ํ•œ ๋ฒˆ์œผ๋กœ ์—ฐ๊ด€๋œ ์—”ํ‹ฐํ‹ฐ๋“ค์„ ํ•จ๊ป˜ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์–ด์„œ SQL ํ˜ธ์ถœ ํšŸ์ˆ˜๋ฅผ ์ค„์—ฌ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ํŽ˜์น˜ ์กฐ์ธ์€ ์—”ํ‹ฐํ‹ฐ์— ์ง์ ‘ ์ ์šฉํ•˜๋Š” ๊ธ€๋กœ๋ฒŒ ๋กœ๋”ฉ ์ „๋žต(FetchType.LAZY)๋ณด๋‹ค ์šฐ์„ ํ•œ๋‹ค. ๊ธ€๋กœ๋ฒŒ ๋กœ๋”ฉ ์ „๋žต์€ ๋  ์ˆ˜ ์žˆ์œผ๋ฉด ๋ชจ๋‘ ์ง€์—ฐ ๋กœ๋”ฉ์„ ์‚ฌ์šฉํ•˜๊ณ  ์ตœ์ ํ™”๊ฐ€ ํ•„์š”ํ•˜๋ฉด ํŽ˜์น˜ ์กฐ์ธ์„ ์ ์šฉํ•˜๋Š” ๊ณณ์ด ํšจ๊ณผ์ ์ด๋‹ค.

๋ชจ๋“  ๊ฒƒ์„ ํŽ˜์น˜ ์กฐ์ธ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜๋Š” ์—†๋‹ค. ํŽ˜์น˜ ์กฐ์ธ์€ ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„๋ฅผ ์œ ์ง€ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ํšจ๊ณผ์ ์ด๋‹ค.

์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•ด์„œ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๊ฐ€์ง„ ๋ชจ์–‘์ด ์•„๋‹Œ ์ „ํ˜€ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋‚ด์•ผ ํ•œ๋‹ค๋ฉด ์–ต์ง€๋กœ ํŽ˜์น˜ ์กฐ์ธ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์ผ๋ฐ˜ ์กฐ์ธ์„ ์‚ฌ์šฉํ•˜๊ณ  ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์—์„œ ํ•„์š”ํ•œ ํ•„๋“œ๋“ค๋งŒ ์กฐํšŒํ•ด์„œ DTO๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ๋” ํšจ๊ณผ์ ์ผ ์ˆ˜ ์žˆ๋‹ค.

๋‹คํ˜•์„ฑ ์ฟผ๋ฆฌ

  • type

์—”ํ‹ฐํ‹ฐ์˜ ์ƒ์† ๊ตฌ์กฐ์—์„œ ์กฐํšŒ ๋Œ€์ƒ์„ ํŠน์ • ์ž์‹ ํƒ€์ž…์œผ๋กœ ํ•œ์ •ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. Item ์ค‘์— Book, Movie๋ฅผ ์กฐํšŒํ•œ๋‹ค.

  • treat

์ž๋ฐ”์˜ ํƒ€์ž… ์บ์ŠคํŒ…๊ณผ ๋น„์Šทํ•˜๋‹ค. ์ƒ์† ๊ตฌ์กฐ์—์„œ ๋ถ€๋ชจ ํƒ€์ž…์„ ํŠน์ • ์ž์‹ ํƒ€์ž…์œผ๋กœ ๋‹ค๋ฃฐ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๋ถ€๋ชจ ํƒ€์ž…์ธ Item์„ ์ž์‹ ํƒ€์ž…์ธ Book์œผ๋กœ ๋‹ค๋ฃฌ๋‹ค.

์—”ํ‹ฐํ‹ฐ ์ง์ ‘ ์‚ฌ์šฉ

  • ๊ธฐ๋ณธ ํ‚ค ๊ฐ’

    • ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค๋Š” ์ฐธ์กฐ ๊ฐ’์œผ๋กœ ์‹๋ณ„ํ•˜๊ณ  ํ…Œ์ด๋ธ” ๋กœ์šฐ๋Š” ๊ธฐ๋ณธ ํ‚ค ๊ฐ’์œผ๋กœ ์‹๋ณ„ํ•œ๋‹ค. JPQL์—์„œ ์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋ฉด SQL์—์„œ๋Š” ํ•ด๋‹น ์—”ํ‹ฐํ‹ฐ์˜ ๊ธฐ๋ณธ ํ‚ค ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค.

์—”ํ‹ฐํ‹ฐ๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ง์ ‘ ๋ฐ›์•„๋„ ์‹๋ณ„์ž ๊ฐ’(Id)์„ ์ง์ ‘ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›๋Š” ๊ฒƒ์ด๋ž‘ ๋˜‘๊ฐ™๋‹ค.

  • ์™ธ๋ž˜ ํ‚ค ๊ฐ’ : ์™ธ๋ž˜ ํ‚ค ๊ฐ’๋„ ๊ธฐ๋ณธ ํ‚ค ๊ฐ’๊ณผ ๋˜‘๊ฐ™์€ ์›๋ฆฌ๋กœ ๋™์ž‘ํ•œ๋‹ค.

Named ์ฟผ๋ฆฌ

๋ฏธ๋ฆฌ ์ •์˜ํ•ด์„œ ์ด๋ฆ„์„ ๋ถ€์—ฌํ•ด๋‘๊ณ  ์‚ฌ์šฉํ•˜๋Š” JPQL์ด๋‹ค. ์ •์  ์ฟผ๋ฆฌ์ด๋‹ค.

Named ์ฟผ๋ฆฌ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๋”ฉ ์‹œ์ ์— ๋ฌธ๋ฒ•์„ ์ฒดํฌํ•˜๊ณ  ๋ฏธ๋ฆฌ ํŒŒ์‹ฑํ•ด ๋‘”๋‹ค. ๊ทธ๋ž˜์„œ ์˜ค๋ฅ˜๋ฅผ ๋นจ๋ฆฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ  ์‚ฌ์šฉํ•˜๋Š” ์‹œ์ ์—๋Š” ํŒŒ์‹ฑ๋œ ๊ฒฐ๊ณผ๋ฅผ ์žฌ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Named ์ฟผ๋ฆฌ๋Š” ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์ •์  SQL์ด ์ƒ์„ฑ๋˜๋ฏ€๋กœ DB์˜ ์กฐํšŒ ์„ฑ๋Šฅ ์ตœ์ ํ™”์—๋„ ๋„์›€์ด ๋œ๋‹ค.

(์ธํ…”๋ฆฌ์ œ์ด ์˜ต์…˜ ์ค‘์— Add Named Query๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŽธ๋ฆฌํ•˜๊ฒŒ Named ์ฟผ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค.)

์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA์—์„œ๋Š” ์ฟผ๋ฆฌ ๋ฉ”์„œ๋“œ ์œ„์— Named ์ฟผ๋ฆฌ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฒŒํฌ ์—ฐ์‚ฐ

์—”ํ‹ฐํ‹ฐ๋ฅผ ์ˆ˜์ •ํ•˜๋ ค๋ฉด ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์˜ ๋ณ€๊ฒฝ ๊ฐ์ง€ ๊ธฐ๋Šฅ์ด๋‚˜ ๋ณ‘ํ•ฉ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‚ญ์ œํ•˜๋ ค๋ฉด em.remove()๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฐฉ๋ฒ•์œผ๋กœ ์ˆ˜๋ฐฑ ๊ฐœ ์ด์ƒ์˜ ์—”ํ‹ฐํ‹ฐ๋ฅผ ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌํ•˜๊ธฐ์—๋Š” ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค. ์ด๋Ÿด ๋•Œ ์—ฌ๋Ÿฌ ๊ฑด์„ ํ•œ ๋ฒˆ์— ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒŒํฌ ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

์žฌ๊ณ ๊ฐ€ 10๊ฐœ ๋ฏธ๋งŒ์ธ ๋ชจ๋“  ์ƒํ’ˆ์˜ ๊ฐ€๊ฒฉ์„ 10% ์ƒ์Šน ์‹œ์ผฐ๋‹ค. ์ด๋•Œ ๋ฒŒํฌ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด executeUpdate()๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋ฐ˜ํ™˜๊ฐ’์€ ๋ฒŒํฌ ์—ฐ์‚ฐ์œผ๋กœ ์˜ํ–ฅ๋ฐ›์€ ๋กœ์šฐ์˜ ์ˆ˜๋‹ค. ์‚ญ์ œ๋„ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

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

์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋ฅผ ๋ฌด์‹œํ•œ๋‹ค๋Š” ๊ฒƒ์€ 1์ฐจ ์บ์‹œ์— ๋‚จ์•„์žˆ๋Š” ์—”ํ‹ฐํ‹ฐ๋Š” ๊ทธ๋Œ€๋กœ ์žˆ๊ณ  DB์—๋งŒ ๋ฐ˜์˜ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰ ๋ฒŒํฌ ์—ฐ์‚ฐ ์ˆ˜ํ–‰ ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋ฉด 1์ฐจ ์บ์‹œ๋Š” ๊ทธ๋Œ€๋กœ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ • ์ „ ๋ฐ์ดํ„ฐ๊ฐ€ ์กฐํšŒ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋ž˜์„œ ๋ฒŒํฌ ์—ฐ์‚ฐ์„ ๊ฐ€์žฅ ๋จผ์ € ์‹คํ–‰์„ ํ•˜๊ฑฐ๋‚˜ ๋ฒŒํฌ ์—ฐ์‚ฐ ์ˆ˜ํ–‰ ํ›„ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋ฅผ ์ดˆ๊ธฐํ™”ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

Last updated