์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
BEST

์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA

JPA(Java Persistence API)๋ฅผ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA์— ๋Œ€ํ•ด ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

Thumbnail

์ค‘๊ธ‰์ž๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ
[์›น ๊ฐœ๋ฐœ, ๋ฐฑ์—”๋“œ] ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฑธ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์š”

  • ORM์— ๋Œ€ํ•œ ์ดํ•ด

  • JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ

  • Bean ์ƒ์„ฑ ๋ฐฉ๋ฒ•

์Šคํ”„๋ง JPA๊ฐ€ ์–ด๋ ต๊ฒŒ ๋Š๊ปด์กŒ๋‹ค๋ฉด?
๊ฐœ๋…๊ณผ ์›๋ฆฌ, ์‹ค์ œ๊นŒ์ง€ ํ™•์‹คํ•˜๊ฒŒ ํ•™์Šตํ•ด ๋ณด์„ธ์š”.

์ œ๋Œ€๋กœ ๋ฐฐ์šฐ๋Š”
๋ฐฑ๊ธฐ์„ ์˜ ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA

JPA(Java Persistence API)๋ฅผ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA์— ๋Œ€ํ•ด ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

์™œ JPA๋ฅผ ํ•™์Šตํ•ด์•ผ ํ•˜๋‚˜์š”?

  • ๋„๋ฉ”์ธ ์ฃผ๋„ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฝ”๋“œ๊ฐ€ SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ จ ์ฝ”๋“œ์— ์ž ์‹๋‹นํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ณ , ๋„๋ฉ”์ธ ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์— ์ข‹์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋…๋ฆฝ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ€๋Šฅํ•˜๊ณ , ํƒ€์ž… ์„ธ์ดํ”„ํ•œ ์ฟผ๋ฆฌ ์ž‘์„ฑ ๊ทธ๋ฆฌ๊ณ  Persistent Context๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์บ์‹œ ๊ธฐ๋Šฅ์œผ๋กœ ์„ฑ๋Šฅ ์ตœ์ ํ™”๊นŒ์ง€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์—ฌ๋Ÿฌ ์žฅ์ ์„ ์ง€๋‹Œ JPA์˜ ํ•œ ๊ฐ€์ง€ ๋‹จ์ , ๋†’์€ ํ•™์Šต ๋น„์šฉ. 
์ด๋ฒˆ ๊ฐ•์˜๊ฐ€ ๊ทธ ํ•™์Šต ๋น„์šฉ์„ ์กฐ๊ธˆ์ด๋ผ๋„ ๋‚ฎ์ถ”๋Š” ๋ฐ ๋„์›€์ด ๋˜๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.


์ด ๊ฐ•์˜๊ฐ€ ๋„์›€์ด ๋˜๋Š” ๋ถ„๋“ค 

JPA ๋˜๋Š” ํ•˜์ด๋ฒ„๋„ค์ดํŠธ 
ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์‹œ์ž‘ํ•˜๋Š” 
ํ•™์ƒ ๋˜๋Š” ๊ฐœ๋ฐœ์ž

ORM๊ณผ JPA ๊ทธ๋ฆฌ๊ณ  
์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA์˜ 
์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์‹ถ์€ ๋ถ„ 

์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA๋ฅผ 
์ฒ˜์Œ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ 
๋” ์ž˜ ํ™œ์šฉํ•˜๊ณ  ์‹ถ์€ ๋ถ„ 


๋‹ค์Œ ๋‚ด์šฉ์„ 
ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“– Spring Data JPA โ†’ JPA (Hibernate) โ†’ JDBC

์ด๋ฒˆ ๊ฐ•์˜๋Š” ๋จผ์ € ORM(Object-Relational Mapping)์ด ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ ์ฆ‰, ๊ฐ์ฒด(Object)์™€ ๊ด€๊ณ„ํ˜•(Relational) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฐœ๋…์ ์ธ ๋ถˆ์ผ์น˜์— ๋Œ€ํ•ด ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์œผ๋กœ ORM์˜ ๊ตฌํ˜„์ฒด์ธ JPA์™€ ํ•˜์ด๋ฒ„๋„ค์ดํŠธ์˜ ์ค‘์š”ํ•œ ํŠน์ง•์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ, Fetching ์ „๋žต๊ณผ ์—”ํ‹ฐํ‹ฐ์˜ ๋ผ์ดํ”„์‚ฌ์ดํด์„ ์ดํ•ดํ•ด์•ผ ์„ฑ๋Šฅ์„ ๊ณ ๋ คํ•˜๋ฉฐ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์–ด์„œ, ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA์˜ ๋งˆ์ˆ ๊ณผ๋„ ๊ฐ™์€ ๋นˆ ์ƒ์„ฑ ๋ฐฉ๋ฒ•๋„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. ํ•ต์‹ฌ ๊ฐœ๋… ์›๋ฆฌ์— ๋Œ€ํ•œ ํ•™์Šต์„ ๋งˆ์น˜๊ณ  ๋ณธ๊ฒฉ์ ์œผ๋กœ ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA์˜ ๋‹ค์–‘ํ•œ ํ™œ์šฉ ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ๋ถ€ํ„ฐ ์‚ดํŽด๋ณด๊ณ  ๋‹ค์–‘ํ•œ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ๋ฐ ์—ฌ๋Ÿฌ ๊ธฐ์ˆ  ์—ฐ๋™ ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.


ํ•™์Šต ๋ชฉํ‘œ๋ฅผ 
ํ™•์ธํ•ด ๋ณด์„ธ์š”.

  • ORM(Object-Relation Mapping)์— ๋Œ€ํ•ด ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.
  • ORM์ด ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ์™€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.
  • JPA๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•˜๋Š” ํŠน์ง•์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.
  • ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA์˜ ๊ตฌ๋™ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.
  • ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์†์‰ฝ๊ฒŒ Repository๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ฟผ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“ข ์ฐธ๊ณ  ์‚ฌํ•ญ์„ ํ™•์ธํ•ด์ฃผ์„ธ์š”.

  • ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๊ฒฝํ—˜์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • JDK, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, IDE, ๋นŒ๋“œํˆด ์„ค์น˜์— ๊ด€ํ•œ ๋‚ด์šฉ์„ ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋ณธ ๊ฐ•์˜๋Š” ๋ฉ”์ด๋ธ, JDK 1.8, ๋„์ปค, PostgreSQL, H2, ์ธํ…”๋ฆฌJ, ์Šคํ”„๋ง ๋ถ€ํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”!

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • JPA ๋˜๋Š” ํ•˜์ด๋ฒ„๋„ค์ดํŠธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์‹œ์ž‘ํ•˜๋Š” ๋ถ„

  • ORM, JPA, ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA์˜ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์‹ถ์€ ๋ถ„

  • ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ํ˜น์€ ๋” ์ž˜ ํ™œ์šฉํ•˜๊ณ  ์‹ถ์€ ๋ถ„

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ

  • ์Šคํ”„๋ง ๊ธฐ์ดˆ

์•ˆ๋…•ํ•˜์„ธ์š”
๋ฐฑ๊ธฐ์„ ์ž…๋‹ˆ๋‹ค.

91,160

๋ช…

์ˆ˜๊ฐ•์ƒ

4,048

๊ฐœ

์ˆ˜๊ฐ•ํ‰

2,009

๊ฐœ

๋‹ต๋ณ€

4.8

์ 

๊ฐ•์˜ ํ‰์ 

20

๊ฐœ

๊ฐ•์˜

๋„ค์ด๋ฒ„์™€ ์•„๋งˆ์กด์„ ๊ฑฐ์ณ ํ˜„์žฌ Microsoft์—์„œ ์‹œ๋‹ˆ์–ด ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋กœ ์ผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์•„์ธ์Šˆํƒ€์ธ์€ "๊ต์œก์ด๋ž€ ์‚ฌ์‹ค์„ ๊ฐ€๋ฅด์น˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ํž˜์„ ๊ธฐ๋ฅด๋Š” ๊ฒƒ์ด๋‹ค."๋ผ๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ €๋„ ๊ทธ ๋ง์— ๊นŠ์ด ๊ณต๊ฐํ•˜๋ฉฐ ๊ฐ•์˜๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์œ ํŠœ๋ธŒ:
'๋ฐฑ๊ธฐ์„ ' ์ฑ„๋„์—์„œ ๊ฐœ๋ฐœ์ž ๊ณ ๋ฏผ ์ƒ๋‹ด ๋ฐ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์œ ์šฉํ•œ ์ง€์‹ ๊ณต์œ 
๋ฒˆ์—ญ: ์Šคํ”„๋ง ๋ฐ ํ•˜์ด๋ฒ„๋„ค์ดํŠธ ๊ด€๋ จ ์„œ์  ๋‹ค์ˆ˜ ๋ฒˆ์—ญ
์ €์ˆ : ์‰ฝ๊ฒŒ ๋”ฐ๋ผํ•˜๋Š” ์ž๋ฐ” ์›น ๊ฐœ๋ฐœ

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

45๊ฐœ โˆ™ (9์‹œ๊ฐ„ 22๋ถ„)

๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์•„์ง ์ถฉ๋ถ„ํ•œ ํ‰๊ฐ€๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.
๋ชจ๋‘์—๊ฒŒ ๋„์›€์ด ๋˜๋Š” ์ˆ˜๊ฐ•ํ‰์˜ ์ฃผ์ธ๊ณต์ด ๋˜์–ด์ฃผ์„ธ์š”!