Back-end/JPA

[JPA] JPA (Java Persistence API)๋ž€?

๐Ÿง JPA๋ž€?

์ž๋ฐ” ๊ฐ์ฒด์™€ DBํ…Œ์ด๋ธ” ๊ฐ„์˜ ๋งคํ•‘์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ORM ํ‘œ์ค€

 

๐Ÿ’ก ์š”์†Œ

์—”ํ‹ฐํ‹ฐ

  • DB์—์„œ ์ง€์†์ ์œผ๋กœ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋ฐ” ๊ฐ์ฒด์— ๋งคํ•‘
  • ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์ž๋ฐ” ๊ฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค ํ˜•ํƒœ๋กœ ์กด์žฌํ•˜๋ฉฐ EntitiyManager์— ์˜ํ•ด DB์˜ ๋ฐ์ดํ„ฐ์™€ ๋™๊ธฐํ™”

 

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

  • ํ•„์š”์— ๋”ฐ๋ผ Enitity์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋™๊ธฐํ™”ํ•œ๋‹ค.
  • EntitiyManager์—์„œ ์ œ๊ณตํ•˜๋Š” Entity ์กฐ์ž‘ API๋ฅผ ์ด์šฉํ•ด Entity์— ๋Œ€ํ•ด CRUD ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜์†์„ฑ ์ปจํ…์ŠคํŠธ ( Persistence Context )

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

์—”ํ‹ฐํ‹ฐ ์ƒํƒœ

  • ๋น„์˜์† : ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์™€ ๊ด€๋ จ์ด ์—†๋Š” ์ƒํƒœ
  • ์˜์† : ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์ €์žฅ๋œ ์ƒํƒœ
  • ์ค€์˜์† : ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์ €์žฅ๋˜์—ˆ๋‹ค๊ฐ€ ๋ถ„๋ฆฌ๋œ ์ƒํƒœ
  • ์‚ญ์ œ : ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์‚ญ์ œ๋œ ์ƒํƒœ

์˜์†์„ฑ ์ „์ด

  • ์—”ํ‹ฐํ‹ฐ์˜ ์˜์†์„ฑ ์ƒํƒœ ๋ณ€ํ™”๋ฅผ ์—ฐ๊ด€๋œ ์—”ํ‹ฐํ‹ฐ์—๋„ ํ•จ๊ผ ์ ์šฉํ•˜๋Š” ๊ฒƒ
  • ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ์—ฐ๊ด€๋œ ์—”ํ‹ฐํ‹ฐ๋„ ํ•จ๊ป˜ ์ €์žฅํ•˜๊ณ  ์—”ํ‹ฐํ‹ฐ๋ฅผ ์‚ญ์ œํ•  ๋•Œ๋„ ๊ด€๋ จ๋œ ์—”ํ‹ฐํ‹ฐ๋„ ํ•จ๊ป˜ ์‚ญ์ œ

 

๐Ÿ’ก JPA ์• ๋…ธํ…Œ์ด์…˜

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

 

๐Ÿ’ก ์ฟผ๋ฆฌ ๋ฉ”์†Œ๋“œ

Spring Data JPA๋Š” ๋ฉ”์†Œ๋“œ์˜ ์ด๋ฆ„๋งŒ์œผ๋กœ ์›ํ•˜๋Š” ์งˆ์˜(query)๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• ์ œ๊ณต

 

๊ธฐ๋ณธ ๊ตฌ์กฐ

  • find...By...
  • read...By...
  • query...By...
  • get...By...
  • count...By...

์ง€์› ํ‚ค์›Œ๋“œ

 

 

 

 

 

 

๋ฐ˜์‘ํ˜•