JiwonDev

JPA #1 ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํ„ฐ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•

by JiwonDev

# ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํ„ฐ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•

๋‹จ์ˆœํžˆ ์ƒ๊ฐํ•˜๋ฉด ๊ฐ์ฒด๋ฅผ SQL์„ ํ†ตํ•ด ํ…Œ์ด๋ธ”๋กœ ์ด๋ฃจ์–ด์ง„ ๊ด€๊ณ„ํ˜• DB์— ์ €์žฅํ•˜๋Š”๊ฒŒ ์œ„์™€ ๊ฐ™์€ ๋ฌธ์ œ์˜ ์›์ธ์ด๊ธด ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ด€๊ณ„ํ˜• DB ๋ง๊ณ ๋Š” '๊ฐ์ฒด'๋ฅผ ์ €์žฅํ•  ๋งˆ๋•…ํ•œ ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋ฏธ๋ž˜์—๋Š” NoSQL๋„ ๋Œ€์•ˆ์ด ๋  ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ, ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘์š”ํ•˜๊ณ  ๋ณต์žกํ•œ ์„œ๋น„์Šค์— ์ ์šฉํ•˜๊ธฐ์—๋Š” ๊ด€๊ณ„ํ˜• DB์— ๋น„ํ•ด ๋ถ€์กฑํ•œ ์ ์ด ๋งŽ์€๊ฒŒ ํ˜„์‹ค์ž…๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๊ณ  ๊ฐ์ฒด๋ฅผ ์„œ๋ฒ„์— File๋กœ ์ €์žฅํ•ด์„œ ๊ด€๋ฆฌํ• ์ˆ˜๋Š” ์—†์œผ๋‹ˆ๊นŒ์š”.

 


# ๊ธฐ์กด Java DB (JDBC)

 JPA๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋˜, SQL ํ•˜๋‚˜ํ•˜๋‚˜ ์ž‘์„ฑํ•˜๋˜ ์‹œ์ ˆ๋กœ ๋Œ์•„๊ฐ€๊ณ  ์‹ถ์ง€ ์•Š๋‹ค. 

๊ธฐ์กด์—๋Š” ์ž๋ฐ” ์ฝ”๋“œ ๋‚ด์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜๊ณ ์ž ํ•˜๋ฉด SQL๋ฌธ์„ ์ง์ ‘ ์ž‘์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•˜๋ ค๊ณ  jdbc template, framework๋“ฑ์„ ์‚ฌ์šฉํ•˜๊ธด ํ–ˆ์ง€๋งŒ, ์ง์ ‘ SQL๋ฌธ์„ ์ž‘์„ฑํ•˜๋Š” ๊ฑด ๋งˆ์ฐฌ๊ฐ€์ง€์˜€์Šต๋‹ˆ๋‹ค.

 


# ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•

๋‹จ์ˆœํžˆ ์ƒ๊ฐํ•˜๋ฉด ์ž๋ฐ”์˜ ๊ฐ์ฒด๋ฅผ ํ…Œ์ด๋ธ”๋กœ ์ด๋ฃจ์–ด์ง„ ๊ด€๊ณ„ํ˜• DB์— ์ €์žฅํ•˜๋Š”๊ฒŒ ์œ„์™€ ๊ฐ™์€ ๋ฌธ์ œ์˜ ์›์ธ์ด๊ธด ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ด€๊ณ„ํ˜• DB ๋ง๊ณ ๋Š” '๊ฐ์ฒด'๋ฅผ ์ €์žฅํ•  ๋งˆ๋•…ํ•œ ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋ฏธ๋ž˜์—๋Š” NoSQL๋„ ๋Œ€์•ˆ์ด ๋  ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ, ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘์š”ํ•˜๊ณ  ๋ณต์žกํ•œ ์„œ๋น„์Šค์— ์ ์šฉํ•˜๊ธฐ์—๋Š” ๊ด€๊ณ„ํ˜• DB์— ๋น„ํ•ด ๋ถ€์กฑํ•œ ์ ์ด ๋งŽ์€๊ฒŒ ํ˜„์‹ค์ž…๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๊ณ  ๊ฐ์ฒด๋ฅผ ์„œ๋ฒ„์— File๋กœ ์ €์žฅํ•ด์„œ ๊ด€๋ฆฌํ• ์ˆ˜๋Š” ์—†์œผ๋‹ˆ๊นŒ์š”.

ํ•˜์ง€๋งŒ ๊ด€๊ณ„ํ˜• DB์—๋Š” ์• ์ดˆ์— ์ƒ์†, ์—ฐ๊ด€ ๊ด€๊ณ„๋ผ๋Š” ๊ฐœ๋…์ด ์—†๊ณ  ๋งŒ๋“ค๊ธฐ๋„ ์–ด๋ ต๋‹ค๋Š” ํฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์ฃ .


# ๊ธฐ์กด JDBC์˜ ๋ฌธ์ œ์ 

์ตœ๊ทผ ๋“ค์–ด ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ, NoSQL๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋„๊ตฌ๋“ค์ด ๋งŽ์ด ๋‚˜์™”์ง€๋งŒ ๊ฒฐ๊ตญ ๊ฒฐ์ œ, ์ฃผ๋ฌธ๋ฐ์ดํ„ฐ ๊ฐ™์€ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ์—๋Š” ๋Œ€๋ถ€๋ถ„ '๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด'์™€ '๊ด€๊ณ„ํ˜• DB'๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ ๊ฐ์ฒด๋ฅผ ๊ด€๊ณ„ํ˜• DB์— ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ฝ”๋“œ์˜ ๋Œ€๋ถ€๋ถ„์ด SQL๋ฌธ์œผ๋กœ ๋„๋ฐฐ ๋  ์ˆ˜ ๋ฐ–์— ์—†๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ธฐ๋Šฅ์„ ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•ด์„œ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๋ฉด CRUD (Create, Read, Update, Delete)๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•˜๊ณ  ํ…Œ์ด๋ธ”๋งˆ๋‹ค ๋ฐ˜๋ณต์ ์ธ SQL๋ฌธ์„ ์ž‘์„ฑํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•จ์€ ๋ณ€ํ•จ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งคํ•‘์ž‘์—…์„ ์ค„์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ํ…Œ์ด๋ธ” ํ•„๋“œ๋ฅผ ์ˆ˜์ •, ์ถ”๊ฐ€ํ•  ๋•Œ ํ•œ๋•€ ํ•œ๋•€ ๋ฐ˜๋ณต์ ์ธ ์ฝ”๋“œ ์ž‘์—…์„ ํ•ด์•ผํ•˜๋Š” ๊ฑด ๋˜‘๊ฐ™์•˜์Šต๋‹ˆ๋‹ค.

 

๋ถ„๋ช… ์šฐ๋ฆฌ๋Š” '๊ฐ์ฒด์ง€ํ–ฅ' ๊ฐœ๋…์„ ์‚ฌ์šฉํ•ด์„œ ์ถ”์ƒํ™”, ์บก์Šํ™”, ์ •๋ณด์€๋‹‰, ์ƒ์†, ๋‹คํ˜•์„ฑ..๋“ฑ ๋งŽ์€ ๊ฐœ๋…์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ด๋Ÿฐ SQL ์˜์กด์ ์ธ ๊ฐœ๋ฐœ ์ž‘์—…์€ ๊ฐ์ฒด์ง€ํ–ฅ์ด ์ง€ํ–ฅํ•˜๋Š” ์ฝ”๋“œ์™€ ๊ฑฐ๋ฆฌ๊ฐ€ ๋ฉ€์–ด์กŒ์ฃ .

๊ฐ์ฒด๋ฅผ SQL์œผ๋กœ ๋งคํ•‘ํ•˜๋Š” ๋…ธ๊ฐ€๋‹ค ์ž‘์—…... ๊ฒฐ๊ตญ ๋‹จ์ˆœ ๋ฐ˜๋ณต์ž…๋‹ˆ๋‹ค. ๊ฐ์ฒด์ง€ํ–ฅ๊ณผ๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ๋ฉ€์–ด์ง€์ฃ 

์ฆ‰ ์•„๋ฌด๋ฆฌ ๊ฐ์ฒด์ง€ํ–ฅ์ ์œผ๋กœ ์˜์กด์„ฑ์„ ๋ถ„๋ฆฌํ•˜๊ณ  ์ถ”์ƒ์ ์œผ๋กœ ๋งŒ๋“ค์–ด ์œ ์ง€๋ณด์ˆ˜์™€ ํ™•์žฅ์„ฑ์„ ๋†’์ธ๋‹ค๊ณ  ํ•œ๋“ค, DB์— ์ €์žฅํ•˜๋Š” ์ˆœ๊ฐ„์—๋Š” SQL๋ฌธ ๋…ธ๊ฐ€๋‹ค๋กœ ํ•˜๋‚˜ํ•˜๋‚˜ ์—ฐ๊ฒฐํ•ด์„œ ์˜๋ฏธ๊ฐ€ ์—†์–ด์ง„๋‹ค๋Š” ๋ง์ž…๋‹ˆ๋‹ค.

 


# ํ˜„์‹ค์ ์ธ ์–ด๋ ค์›€, ๊ฐ์ฒด -> DB

๊ด€๊ณ„ํ˜• DB์— JAVA์˜ ๊ฐ์ฒด์™€ ๊ฐ™์ด ์ƒ์†, ์—ฐ๊ด€ ๊ด€๊ณ„๋ฅผ ์ ์šฉ ์‹œํ‚ค๋Š” ๊ฑด ์ ˆ๋Œ€ ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด DB์˜ ์Šˆํผ,์„œ๋ธŒํƒ€์ž…์„ ์ด์šฉํ•ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ตœ๋Œ€ํ•œ ๊ฐ์ฒด์™€ ๋น„์Šทํ•˜๊ฒŒ ๊ตฌ์„ฑํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค.

์ž๋ฐ”์˜ ๊ฐ์ฒด(์™ผ์ชฝ, ์ƒ์†๊ด€๊ณ„), MySQL์˜ ํ…Œ์ด๋ธ”(์˜ค๋ฅธ์ชฝ, ์Šˆํผํƒ€์ž… ์„œ๋ธŒํƒ€์ž…)

์‹ค์ œ ํ…Œ์ด๋ธ”์ด 2๊ฐœ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ์œผ๋‹ˆ ALBUM ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

1. ๊ฐ์ฒด(Album)์„ ํ…Œ์ด๋ธ”์— ๋งž์ถฐ ITEM, ALBUM์œผ๋กœ ๋ถ„ํ•ด
2. Insert Into ITEM
3. Insert Into ALBUM

์ด๋ ‡๊ฒŒ ๋‚˜๋ˆ„์–ด ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”?

MOVIE ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋ ค๋ฉด MOVIE์™€ ITEM์˜ Join ์ฟผ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ฐ€์ ธ์˜จ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ง€๊ณ  Movie ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•ด...

์ฝ”๋“œ ๊ตฌํ˜„์€ ๋‘˜์งธ์น˜๊ณ  ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ ์ž์ฒด๋„ ํž˜๋“ญ๋‹ˆ๋‹ค. ์ค‘์š”ํ•œ ๊ฑด ์ด ๊ณผ์ •์„ ๊ฐ๊ฐ์˜ ํ…Œ์ด๋ธ”๋งˆ๋‹ค ๋ฐ˜๋ณต์ ์œผ๋กœ ๊ตฌํ˜„ํ•ด์ค˜์•ผ ํ•œ๋‹ค๋Š” ์ ์ด์ฃ . ๋ฌผ๋ก  ์‹ค์ˆ˜ํ•˜๊ธฐ ์‰ฌ์šฐ๋‹ˆ ๊ฐ๊ฐ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด์ค˜์•ผ ํ•˜๋Š” ๊ฒƒ์€ ๋‹น์—ฐํ•œ ๊ณผ์ •์ด๊ตฌ์š”.

 

์‚ฌ์‹ค ์ด ์ž‘์—…์€ ์ž๋ฐ” ๋‚ด์—์„œ๋งŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์ •๋ง ์‰ฝ๊ณ  ๊น”๋”ํ•˜๊ฒŒ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ SQL์— ๋งคํ•‘ํ•˜๋Š” ์ˆœ๊ฐ„ ์ฝ”๋“œ๊ฐ€ ์ •๋ง ๋ณต์žกํ•ด์ง€๊ณ  ๋ฐ˜๋ณต์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ถ”์ƒํ™”..๋‹คํ˜•์„ฑ.. ์ด๋Ÿฐ๊ฒŒ ๋‹ค ์˜๋ฏธ๊ฐ€ ์—†์–ด์ง„๋‹ค๋Š” ๋ง์ด์ฃ .

// ์ˆœ์ˆ˜ ์ž๋ฐ”๋งŒ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€, ์กฐํšŒ์ฝ”๋“œ
// album ์ถ”๊ฐ€
list.add(album)

// ์กฐํšŒ, album ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•˜์—ฌ ์กฐํšŒ
Album album = list.get(albumID);

// ๋ถ€๋ชจ ํƒ€์ž…(Item-album)์œผ๋กœ ์กฐํšŒ ํ›„ ๋‹คํ˜•์„ฑ ํ™œ์šฉ๊ฐ€๋Šฅ
Item item = list.get(albumID);

 


# JPA ( Java Persistence API )

์ด๋Ÿฌํ•œ ๋ถˆํŽธํ•œ ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ์œ„ํ•ด ์ž๋ฐ”์ง„ํ˜•์—์„œ๋Š” ORM ๊ธฐ์ˆ  (Object Relational Mapping, ๊ฐ์ฒด - RDB ๋งคํ•‘ ๊ธฐ์ˆ ) ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ๊ฐ€์‹œ ์‹œ๋„๋ฅผ ํ•˜์˜€๊ณ , ๋‹น์‹œ ์œ ๋ช…ํ–ˆ๋˜ ์˜คํ”ˆ์†Œ์Šค 'Hibernate'์˜ ORM ๊ธฐ์ˆ ์„ ๊ฐ€์ ธ์™€ ์ž๋ฐ” ํ‘œ์ค€์œผ๋กœ ๋งŒ๋“  ๊ฒƒ์ด ๋ฐ”๋กœ JPA์ž…๋‹ˆ๋‹ค.

 

JPA๋Š” ๊ฐ์ฒด๋ฅผ ๊ฐ์ฒด๋‹ต๊ฒŒ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” SQL๋ฌธ์„ ๊ฑฐ์˜ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ๊ด€๊ณ„ํ˜•DB์— ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์ฃ .

์ž๋ฐ” ์ฝ”๋“œ ์•„๋‹™๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(SQL) ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ JPA๊ฐ€ ๋‚˜์˜จ์ง€ ์˜ค๋ž˜๋˜์—ˆ๊ณ  ์ „์„ธ๊ณ„์ ์œผ๋กœ ์‚ฌ์šฉ๋ฅ ์ด ์••๋„์ ์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  2015๋…„๊นŒ์ง€ ํ•œ๊ตญ(+์ค‘๊ตญ)์—์„œ๋Š” JPA๋ฅผ ์“ฐ๊ธฐ ๊บผ๋ คํ–ˆ์Šต๋‹ˆ๋‹ค. ์™œ ๊ทธ๋žฌ์„๊นŒ์š”?


# ์‹ค๋ฌด์—์„œ JPA๋ฅผ ์ ์šฉํ•˜๊ธฐ ์–ด๋ ค์šด ์ด์œ 

๋„ค. ์ˆ˜์‹ญ ์ค„์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฝ”๋“œ, SQL๋ฌธ๋“ค์„ ํ•œ, ๋‘ ์ค„๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด JPA์ž…๋‹ˆ๋‹ค.

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

 

JPA๋ฅผ ์ •๋ง ์ž˜ ์“ฐ๊ธฐ ์œ„ํ•ด์„œ๋Š”

1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ธฐ์ดˆ ๊ฐœ๋…๊ณผ ๊ฐ์ฒด์™€ ํ…Œ์ด๋ธ”์„ ๋งคํ•‘์„ ํ•  ์ค„ ์•Œ์•„์•ผํ•ฉ๋‹ˆ๋‹ค.

2. JPA ์ฝ”๋“œ์˜ ๋‚ด๋ถ€ ๋™์ž‘๊ณผ ๊ทธ ์ฝ”๋“œ๊ฐ€ ์–ด๋– ํ•œ SQL๋ฌธ์ด ์ƒ์„ฑ๋˜๋Š”์ง€ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

3. JPA๋ฅผ ์ž˜ ์“ฐ๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋งŒ๋“ค์–ด์ง„ SQL๋ฅผ ์–ธ์ œ ์‹คํ–‰ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

๋ฌผ๋ก  ๋ง์ด ์‰ฝ์ง€, JPA๋Š” ํ‘œ์ค€ ๋ฌธ์„œ๊ฐ€ 500p๊ฐ€ ๋„˜์„ ์ •๋„๋กœ ๋‚ด์šฉ์ด ๋ฐฉ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ•œ๋ฒˆ๋งŒ ์ œ๋Œ€๋กœ ๋ฐฐ์›Œ ๋†“๋Š”๋‹ค๋ฉด ์—ฌ๋Ÿฌ๋ถ„์˜ ์ž๋ฐ” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ๋ฐœ์— ํˆฌ์žํ•  ์‹œ๊ฐ„์„ ์ˆ˜๋ฐฑ, ์ˆ˜์ฒœ ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑด ํ™•์‹คํ•ฉ๋‹ˆ๋‹ค.

์ค‘๊ตญ๊ณผ ํ•œ๊ตญ์„ ์ œ์™ธํ•˜๋ฉด ๊ธฐ์กด์˜ JDBC ํ”„๋ ˆ์ž„์›Œํฌ๋“ค๋ณด๋‹ค ์••๋„์ ์ธ ์‚ฌ์šฉ๋Ÿ‰์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. (+ํ•œ๊ตญ๋„ ๋ฐ”๋€Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.)

 

ํ•œ๊ตญ์—์„œ ์‚ฌ์šฉ๋Ÿ‰์ด ๋‚ฎ์•˜๋˜ ์ด์œ ๋Š” JPA์™€ ๊ด€๋ จ๋œ ๊ณต์‹๋ฌธ์„œ๋“ค์ด ์ „๋ถ€ ๋”ฑ๋”ฑํ•œ ์˜์–ด๋กœ ์ ํ˜€์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์˜์–ด๋ฅผ ์ž˜ํ•˜๊ฑฐ๋‚˜ ๊ฐœ๋ฐœ์— ์ •๋ง ๊ด€์‹ฌ์ด ๋งŽ์€ ์†Œ์ˆ˜๋งŒ ์‚ฌ์šฉํ•ด์˜ค๋‹ค๊ฐ€, 2015๋…„์— ๋“ค์–ด์„œ ๋‹ค์–‘ํ•œ JPA ์ž๋ฃŒ๊ฐ€ ๋‚˜์˜ค๋ฉด์„œ ์‚ฌ์šฉ๋ฅ ์ด ๊ธ‰์ฆํ•˜๊ณ  ์žˆ์ฃ .  

 

์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ต๋ณด๋ฌธ๊ณ 

์Šคํ”„๋ง ๋ฐ์ดํ„ฐ ์˜ˆ์ œ ํ”„๋กœ์ ํŠธ๋กœ ๋ฐฐ์šฐ๋Š” ์ „์ž์ •๋ถ€ ํ‘œ์ค€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ”„๋ ˆ์ž„ | โ˜… ์ด ์ฑ…์—์„œ ๋‹ค๋ฃจ๋Š” ๋‚ด์šฉ โ˜…โ–  JPA ๊ธฐ์ดˆ ์ด๋ก ๊ณผ ํ•ต์‹ฌ ์›๋ฆฌโ–  JPA๋กœ ๋„๋ฉ”์ธ ๋ชจ๋ธ์„ ์„ค๊ณ„ํ•˜๋Š” ๊ณผ์ •์„ ์˜ˆ์ œ ์ค‘์‹ฌ์œผ๋กœ

www.kyobobook.co.kr

 


# ์‹ค๋ฌด์—์„œ์˜ JPA

์Šคํ”„๋ง์€ ๊ธฐ๋ณธ์ ์œผ๋กœ JPA๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๋Œ€๊ธฐ์—…๋“ค(์šฐ์•„ํ•œํ˜•์ œ๋“ค, ์ฟ ํŒก, ์นด์นด์˜ค, ๋„ค์ด๋ฒ„)์€ ๋ฌผ๋ก ์ด๊ณ  ์กฐ ๋‹จ์œ„ ๊ฑฐ๋ž˜๊ธˆ์•ก์ด ๋ฐœ์ƒํ•˜๋Š” ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค์—์„œ๋„ JPA๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ JPA๋Š” ์ž๋ฐ”์˜ ๊ธฐ๋ณธ ๊ธฐ์ˆ ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

SQL์ด๋‚˜ DB์˜ ๋™์ž‘ ๊ตฌ์กฐ๋ฅผ ๋ชจ๋ฅด๋ฉด์„œ ์ „ํ˜€ ๋ชจ๋ฅด๋ฉด์„œ ์ถ”์ƒํ™”๋œ JPA๋ฅผ ์“ฐ๋Š” ๊ฑด ์ƒ๋‹นํžˆ ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ์ผ์–ด๋‚ฌ์„ ๋•Œ ์™œ ๊ทธ๋Ÿฐ์ง€ ์ฐพ๋Š”๊ฒŒ ์‚ฌ์‹ค์ƒ ๋ถˆ๊ฐ€๋Šฅํ•˜์ฃ . ๊ทธ๋ž˜์„œ JPA์˜ ํ•™์Šต๋‚œ์ด๋„๊ฐ€ ์‰ฝ๋‹ค๊ณ  ๋งํ•˜๊ธด ์–ด๋ ต์ง€๋งŒ, ํ•œ๋ฒˆ ์ œ๋Œ€๋กœ ๋ฐฐ์›Œ ๋†“๋Š”๋‹ค๋ฉด ๋‹จ์ˆœํ•œ SQL ๋…ธ๊ฐ€๋‹ค์— ๋‚ญ๋น„๋˜๋˜ ์‹œ๊ฐ„์„ ๋ฐ์ดํ„ฐ ์„ค๊ณ„ ๊ณ ๋ฏผ, ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ์— ์Ÿ์œผ๋ฉฐ ์ง„์ •ํ•œ ๊ฐœ๋ฐœ์˜ ์ฆ๊ฑฐ์›€์„ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

JiwonDev

JiwonDev

ํ™œ๋™ํ•˜๊ธฐ