Skip to content

Latest commit

ย 

History

History
134 lines (111 loc) ยท 8.05 KB

02_JPA_์‹œ์ž‘.md

File metadata and controls

134 lines (111 loc) ยท 8.05 KB

Chapter 2: JPA ์‹œ์ž‘


๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

JPA ๊ตฌํ˜„์ฒด๋กœ ํ•˜์ด๋ฒ„๋„ค์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํ•ต์‹ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • hibernate-core
    • ํ•˜์ด๋ฒ„๋„ค์ดํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • hibernate-entitymanager
    • ํ•˜์ด๋ฒ„๋„ค์ดํŠธ๊ฐ€ JPA ๊ตฌํ˜„์ฒด๋กœ ๋™์ž‘ํ•˜๋„๋ก JPA ํ‘œ์ค€์„ ๊ตฌํ˜„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • hibernate-jpa-2.1-api
    • JPA 2.1 ํ‘œ์ค€ API๋ฅผ ๋ชจ๋‘ ๋ชจ์•„๋‘” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

๋ฉ”์ด๋ธ๊ณผ ์‚ฌ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ฆฌ

  • ๋ฉ”์ด๋ธ (Maven)
    • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ๊ณผ ๋นŒ๋“œ ๊ธฐ๋Šฅ์„ ์ œ๊ณต
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ
    • ๋ฉ”์ด๋ธ์€ ์‚ฌ์šฉํ•  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด๋ฆ„ ๊ณผ ๋ฒ„์ „ ์„ ๋ช…์‹œํ•˜๋ฉด, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ๋‚ด๋ ค๋ฐ›๊ณ  ๊ด€๋ฆฌ ํ•ด์ค€๋‹ค
  • ๋นŒ๋“œ ๊ธฐ๋Šฅ
    • ๋ฉ”์ด๋ธ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•˜๋Š” ํ‘œ์ค€ํ™”๋œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค

๊ฐ์ฒด ๋งคํ•‘ ์‹œ์ž‘

  • @Entity
    • ์ด ํด๋ž˜์Šค๋ฅผ ํ…Œ์ด๋ธ”๊ณผ ๋งคํ•‘ํ•œ๋‹ค๊ณ  JPA์— ์•Œ๋ ค์ค€๋‹ค
    • ์ด๋ ‡๊ฒŒ @Entity ๊ฐ€ ์‚ฌ์šฉ๋œ ํด๋ž˜์Šค๋ฅผ ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค๋ผ๊ณ  ํ•œ๋‹ค
  • @Table
    • ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค์— ๋งคํ•‘ํ•  ํ…Œ์ด๋ธ” ์ •๋ณด๋ฅผ ์•Œ๋ ค์ค€๋‹ค
    • ์ด ์–ด๋…ธํ…Œ์ด์…˜์„ ์ƒ๋žตํ•˜๋ฉด ํด๋ž˜์Šค ์ด๋ฆ„์œผ๋กœ ๋งคํ•‘ํ•œ๋‹ค
      • ์ •ํ™•ํžˆ๋Š” ์—”ํ‹ฐํ‹ฐ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•œ๋‹ค
  • @Id
    • ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค์˜ ํ•„๋“œ๋ฅผ ๊ธฐ๋ณธ ํ‚ค(Primary Key) ์— ๋งคํ•‘ํ•œ๋‹ค
    • @Id ๊ฐ€ ์‚ฌ์šฉ๋œ ํ•„๋“œ๋ฅผ ์‹๋ณ„์ž ํ•„๋“œ๋ผ ํ•œ๋‹ค
  • @Column
    • ํ•„๋“œ๋ฅผ ์ปฌ๋Ÿผ์— ๋งคํ•‘ํ•œ๋‹ค
  • ๋งคํ•‘ ์ •๋ณด๊ฐ€ ์—†๋Š” ํ•„๋“œ
    • ๋งคํ•‘ ์–ด๋…ธํ…Œ์ด์…˜์„ ์ƒ๋žตํ•˜๋ฉด ํ•„๋“œ๋ช…์„ ์‚ฌ์šฉํ•ด์„œ ์ปฌ๋Ÿผ๋ช…์œผ๋กœ ๋งคํ•‘ํ•œ๋‹ค

persistence.xml ์„ค์ •

  • JPA๋Š” persistence.xml์„ ์‚ฌ์šฉํ•ด์„œ ํ•„์š”ํ•œ ์„ค์ • ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค
    • ํ•ด๋‹น ํŒŒ์ผ์ด META-INF/persistence.xml class path ๊ฒฝ๋กœ์— ์žˆ์œผ๋ฉด ๋ณ„๋„ ์„ค์ • ์—†์ด JPA๊ฐ€ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋‹ค
  • JPA ์„ค์ •์€ ์˜์†์„ฑ ์œ ๋‹› (persistence-unit) ์ด๋ผ๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š”๋ฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ์—ฐ๊ฒฐ ํ•  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‹น ํ•˜๋‚˜์˜ ์˜์†์„ฑ ์œ ๋‹›์„ ๋“ฑ๋กํ•œ๋‹ค
    • ์˜์†์„ฑ ์œ ๋‹›์—๋Š” ๊ณ ์œ ํ•œ ์ด๋ฆ„์„ ๋ถ€์—ฌํ•ด์•ผ ํ•œ๋‹ค
  • ์ด๋ฆ„์ด javax.persistence ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์†์„ฑ์€ JPA ํ‘œ์ค€ ์†์„ฑ ์œผ๋กœ ํŠน์„ฑ ๊ตฌํ˜„์ฒด์— ์ข…์†๋˜์ง€ ์•Š๋Š”๋‹ค
    • ๋ฐ˜๋ฉด hibernate ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์†์„ฑ์€ ํ•˜์ด๋ฒ„๋„ค์ดํŠธ ์ „์šฉ ์†์„ฑ ์ด๋ฏ€๋กœ ํ•˜์ด๋ฒ„๋„ค์ดํŠธ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฉ์–ธ

  • JPA๋Š” ํŠน์ • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ข…์†์ ์ด์ง€ ์•Š์€ ๊ธฐ์ˆ ์ด๋ผ์„œ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์†์‰ฝ๊ฒŒ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค
  • but, ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ œ๊ณตํ•˜๋Š” SQL ๋ฌธ๋ฒ•๊ณผ ํ•จ์ˆ˜๊ฐ€ ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅด๋‹ค๋Š” ๋ฌธ์ œ์ ์ด ์žˆ๋‹ค
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋งˆ๋‹ค ๊ฐ–๊ณ ์žˆ๋Š” ์ฐจ์ด์  ์˜ˆ์‹œ
      • ๋ฐ์ดํ„ฐ ํƒ€์ž…
        • ๊ฐ€๋ณ€ ๋ฌธ์ž ํƒ€์ž…์œผ๋กœ MySQL์€ VARCHAR, ์˜ค๋ผํด์€ VARCHAR2 ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค
      • ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ช…
        • ๋ฌธ์ž์—ด์„ ์ž๋ฅด๋Š” ํ•จ์ˆ˜๋กœ SQL ํ‘œ์ค€์€ SUBSTRING() ์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ์˜ค๋ผํด์€ SUBSTR() ์„ ์‚ฌ์šฉํ•œ๋‹ค
      • ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ
        • MySQL์€ LIMIT ์„ ์ƒ์š”ํ•˜์ง€๋งŒ, ์˜ค๋ผํด์€ ROWNUM ์„ ์‚ฌ์šฉํ•œ๋‹ค
  • ์ด์ฒ˜๋Ÿผ SQL ํ‘œ์ค€์„ ์ง€ํ‚ค์ง€ ์•Š๊ฑฐ๋‚˜, ํŠน์ • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋งŒ์˜ ๊ณ ์œ ํ•œ ๊ธฐ๋Šฅ์„ JPA์—์„œ๋Š” ๋ฐฉ์–ธ (Dialect) ์ด๋ผ ํ•œ๋‹ค
    • ํ•˜์ด๋ฒ„๋„ค์ดํŠธ๋ฅผ ํฌํ•จํ•œ ๋Œ€๋ถ€๋ถ„์˜ JPA ๊ตฌํ˜„์ฒด๋“ค์€ ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฉ์–ธ ํด๋ž˜์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค
  • ๊ฐœ๋ฐœ์ž๋Š” JPA๊ฐ€ ์ œ๊ณตํ•˜๋Š” ํ‘œ์ค€ ๋ฌธ๋ฒ•์— ๋งž์ถ”์–ด JPA๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๊ณ , ํŠน์ • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์˜์กด์ ์ธ SQL์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฉ์–ธ์ด ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค

ํ•˜์ด๋ฒ„๋„ค์ดํŠธ ์ „์šฉ ์†์„ฑ

  • hibernate.show_sql
    • ํ•˜์ด๋ฒ„๋„ค์ดํŠธ๊ฐ€ ์‹คํ–‰ํ•œ SQL์„ ์ถœ๋ ฅํ•œ๋‹ค
  • hibernate.format_sql
    • ํ•˜์ด๋ฒ„๋„ค์ดํŠธ๊ฐ€ ์‹คํ–‰ํ•œ SQL์„ ์ถœ๋ ฅํ•  ๋•Œ ๋ณด๊ธฐ ์‰ฝ๊ฒŒ ์ •๋ ฌํ•œ๋‹ค
  • hiberante.use_sql_comments
    • ์ฟผ๋ฆฌ๋ฅผ ์ถœ๋ ฅํ•  ๋•Œ ์ฃผ์„๋„ ํ•จ๊ป˜ ์ถœ๋ ฅํ•œ๋‹ค
  • hibernate.id.new_generator_mappings
    • JPA ํ‘œ์ค€์— ๋งž์ถ˜ ์ƒˆ๋กœ์šด ํ‚ค ์ƒ์„ฑ ์ „๋žต์„ ์‚ฌ์šฉํ•œ๋‹ค

์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ์„ค์ •

์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ์ƒ์„ฑ ๊ณผ์ • ๋ถ„์„

  • ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ํŒฉํ† ๋ฆฌ ์ƒ์„ฑ
    • JPA๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ์šฐ์„  persistence.xml์˜ ์„ค์ • ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ํŒฉํ† ๋ฆฌ ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค
      • ์ด๋•Œ Persistence class๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์ด ํด๋ž˜์Šค๋Š” ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ํŒฉํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ด์„œ JPA๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ค€๋น„ํ•œ๋‹ค
    • persistence.xml์˜ ์„ค์ • ์ •๋ณด๋ฅผ ์ฝ์–ด์„œ JPA๋ฅผ ๋™์ž‘์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๊ธฐ๋ฐ˜ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ , JPA ๊ตฌํ˜„์ฒด์— ๋”ฐ๋ผ์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปค๋„ฅ์…˜ ํ’€ ๋„ ์ƒ์„ฑํ•˜๋ฏ€๋กœ ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ํŒฉํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋น„์šฉ์€ ์•„์ฃผ ํฌ๋‹ค
      • ๋”ฐ๋ผ์„œ ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ํŒฉํ† ๋ฆฌ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด์—์„œ ๋”ฑ ํ•œ ๋ฒˆ๋งŒ ์ƒ์„ฑํ•˜๊ณ  ๊ณต์œ  ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค
  • ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ์ƒ์„ฑ
    • ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ํŒฉํ† ๋ฆฌ์—์„œ ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €๋ฅผ ์ƒ์„ฑํ•œ๋‹ค
    • JPA์˜ ๊ธฐ๋Šฅ ๋Œ€๋ถ€๋ถ„์€ ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ๊ฐ€ ์ œ๊ณตํ•œ๋‹ค
      • ๋Œ€ํ‘œ์ ์œผ๋กœ ์—”ํ‹ฐํ‹ฐ ๋ฉ”๋‹ˆ์ €๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์—”ํ‹ฐํ‹ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋“ฑ๋ก/์ˆ˜์ •/์‚ญ์ œ/์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค
    • ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €๋Š” ๋‚ด๋ถ€์— ๋ฐ์ดํ„ฐ์†Œ์Šค (๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปค๋„ฅ์…˜) ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ํ†ต์‹ ํ•œ๋‹ค
    • ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปค๋„ฅ์…˜๊ณผ ๋ฐ€์ ‘ํ•œ ๊ด€๊ณ„๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์Šค๋ ˆ๋“œ ๊ฐ„์— ๊ณต์œ ํ•˜๊ฑฐ๋‚˜ ์žฌ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ๋œ๋‹ค
  • ์ข…๋ฃŒ
    • ์‚ฌ์šฉ์ด ๋๋‚œ ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €๋Š” ๋ฐ˜๋“œ์‹œ ์ข…๋ฃŒํ•ด์•ผ ํ•œ๋‹ค
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ข…๋ฃŒํ•  ๋•Œ ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ํŒฉํ† ๋ฆฌ๋„ ์ข…๋ฃŒํ•ด์•ผ ํ•œ๋‹ค

ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ

  • JPA๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ญ์ƒ ํŠธ๋žœ์žญ์…˜ ์•ˆ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค
  • ํŠธ๋žœ์žญ์…˜ ์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค
  • ํŠธ๋žœ์žญ์…˜์„ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €์—์„œ ํŠธ๋žœ์žญ์…˜ API๋ฅผ ๋ฐ›์•„์™€์•ผ ํ•œ๋‹ค
  • ํŠธ๋žœ์žญ์…˜ API๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ์ •์ƒ ๋™์ž‘ํ•˜๋ฉด ํŠธ๋žœ์žญ์…˜์„ ์ปค๋ฐ‹ ํ•˜๊ณ , ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํŠธ๋žœ์žญ์…˜์„ ๋กค๋ฐฑ ํ•œ๋‹ค

๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง

๋“ฑ๋ก, ์ˆ˜์ •, ์‚ญ์ œ, ์กฐํšŒ ์ž‘์—…์€ ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €(em)๋ฅผ ํ†ตํ•ด์„œ ์ˆ˜ํ–‰๋œ๋‹ค

  • ๋“ฑ๋ก
    • ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ €์žฅํ•˜๋ ค๋ฉด ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €์˜ persist() method์— ์ €์žฅํ•  ์—”ํ‹ฐํ‹ฐ๋ฅผ ๋„˜๊ฒจ์ฃผ๋ฉด ๋œ๋‹ค
    • JPA๋Š” INSERT SQL์„ ๋งŒ๋“ค์–ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ „๋‹ฌํ•œ๋‹ค
  • ์ˆ˜์ •
    • ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ˆ˜์ •ํ•œ ํ›„์— ์ˆ˜์ • ๋‚ด์šฉ์„ ๋ฐ˜์˜ํ•˜๋ ค๋ฉด em.update() ๊ฐ™์€ method๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์€๋ฐ, ๋‹จ์ˆœํžˆ ์—”ํ‹ฐํ‹ฐ์˜ ๊ฐ’๋งŒ ๋ณ€๊ฒฝํ•œ๋‹ค
    • why?
      • JPA๋Š” ์–ด๋–ค ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ์ถ”์ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ”๊ณ  ์žˆ๋‹ค
      • ๋”ฐ๋ผ์„œ ์—”ํ‹ฐํ‹ฐ์˜ ๊ฐ’๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด UPDATE SQL์„ ์ƒ์„ฑํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ฐ’์„ ๋ณ€๊ฒฝํ•œ๋‹ค
  • ์‚ญ์ œ
    • ์—”ํ‹ฐํ‹ฐ๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €์˜ remove() method์— ์‚ญ์ œํ•˜๋ ค๋Š” ์—”ํ‹ฐํ‹ฐ๋ฅผ ๋„˜๊ฒจ์ค€๋‹ค
    • JPA๋Š” DELETE SQL์„ ์ƒ์„ฑํ•ด์„œ ์‹คํ–‰ํ•œ๋‹ค
  • ํ•œ ๊ฑด ์กฐํšŒ
    • find() method๋Š” ์กฐํšŒํ•  ์—”ํ‹ฐํ‹ฐ ํƒ€์ž…๊ณผ @Id ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค์™€ ๋งคํ•‘ํ•œ ์‹๋ณ„์ž ๊ฐ’์œผ๋กœ ์—”ํ‹ฐํ‹ฐ ํ•˜๋‚˜๋ฅผ ์กฐํšŒํ•˜๋Š” ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ์กฐํšŒ method๋‹ค
    • ์ด method๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด SELECT SQL์„ ์ƒ์„ฑํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ฒฐ๊ณผ๋ฅผ ์กฐํšŒํ•œ๋‹ค
      • ๊ทธ๋ฆฌ๊ณ  ์กฐํšŒํ•œ ๊ฒฐ๊ณผ ๊ฐ’์œผ๋กœ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค

JPQL

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ถˆ๋Ÿฌ์˜ค๋ ค๋ฉด ๊ฒฐ๊ตญ ๊ฒ€์ƒ‰ ์กฐ๊ฑด ์ด ํฌํ•จ๋œ SQL์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค
    • JPA๋Š” JPQL (Java Persistence Query Language) ๋ผ๋Š” ์ฟผ๋ฆฌ ์–ธ์–ด๋กœ ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค
  • JPA๋Š” SQL์„ ์ถ”์ƒํ™”ํ•œ JPQL ์ด๋ผ๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ์ฟผ๋ฆฌ ์–ธ์–ด๋ฅผ ์ œ๊ณตํ•œ๋‹ค
    • JPQL์€ SQL๊ณผ ๋ฌธ๋ฒ•์ด ๊ฑฐ์˜ ์œ ์‚ฌํ•ด์„œ SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN ๋“ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค
  • JPQL๊ณผ SQL์˜ ์ฐจ์ด์ 
    • JPQL์€ ์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ฟผ๋ฆฌํ•œ๋‹ค
      • ์ฆ‰, ํด๋ž˜์Šค์™€ ํ•„๋“œ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ฟผ๋ฆฌํ•œ๋‹ค
    • SQL์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ์„ ๋Œ€์ƒ์œผ๋กœ ์ฟผ๋ฆฌํ•œ๋‹ค
  • JPQL์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์„ ์ „ํ˜€ ์•Œ์ง€ ๋ชปํ•œ๋‹ค
  • JPA๋Š” JPQL์„ ๋ถ„์„ํ•ด์„œ ์ ์ ˆํ•œ SQL์„ ๋งŒ๋“ค์–ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•œ๋‹ค