๊ณ„๋ž€์†Œ๋…„ 2023. 12. 22. 14:13

์ž๋ฐ” ORM ํ‘œ์ค€ JPA ๊ธฐ๋ณธํŽธ

์ธํ”„๋Ÿฐ ๊น€์˜ํ•œ๋‹˜์˜ '์ž๋ฐ” ORM ํ‘œ์ค€ JPA ๊ธฐ๋ณธํŽธ' ๊ฐ•์˜ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ
https://www.inflearn.com/course/ORM-JPA-Basic#

 

์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ ๊ฐ•์˜ - ์ธํ”„๋Ÿฐ

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

www.inflearn.com

๊น€์˜ํ•œ๋‹˜ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ๊ฐœ์ธ์ ์œผ๋กœ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ๋‹จ์ˆœํžˆ ๊ฐœ์ธ ๊ณต๋ถ€๋ฅผ ์œ„ํ•œ ๊ฐœ์ธ์ •๋ฆฌ๊ธ€์ด๋‹ค.

https://dodeon.gitbook.io/study/kimyounghan-orm-jpa/01-jpa-introduction

 

JPA ์†Œ๊ฐœ - dodeon

์ €์žฅ, ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œ์— ๋Œ€ํ•œ SQL์ด ํ•„์š”์—†๊ณ  ๊ทธ๋ƒฅ ๋งŒ๋“ค์–ด์ ธ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์“ฐ๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.

dodeon.gitbook.io

๋” ์ž˜ ์„ค๋ช…๋˜์–ด ์žˆ๊ธฐ์—,  ์ž์„ธํ•œ ์„ค๋ช…์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ์ฐธ์กฐํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค.

 

SQL ์ค‘์‹ฌ ๊ฐœ๋ฐœ์˜ ๋ฌธ์ œ์ 

 ๊ฐ์ฒด์ง€ํ–ฅ๊ณผ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์ด์— ์ •ํ™•ํ•œ ์ผ์น˜์ ์„ ์ฐพ๊ธฐ ํž˜๋“ค๋‹ค. ์–ด๋Š ํ•˜๋‚˜๋„ ๋ฒ„๋ฆด ์ˆ˜ ์—†์ด ์‚ฌ์šฉํ•ด์•ผ ํ•˜์ง€๋งŒ, ๋‘๊ฐœ๋ฅผ ์ •ํ™•ํžˆ ๊ณต์กดํ•˜๋ฉฐ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์€ ์‰ฝ์ง€์•Š์œผ๋ฉฐ ํ•œ์ชฝ์„ ํฌ๊ธฐํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๊ฐ์ฒด์™€ RDB์˜ SQL์‚ฌ์ด์—์„œ ๋ณ€ํ™˜์„ ํ•ด์ฃผ๋Š”๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค. ๊ทธ๊ฒƒ์„ ์šฐ๋ฆฌ ๊ฐœ๋ฐœ์ž ๋“ค์ด ํ•ด์•ผํ•œ๋‹ค.

๊ฐ์ฒด์™€ RDB์˜ ์ฐจ์ด๊ฐ€ ๋ฌด์—‡์ผ๊นŒ?

1.์ƒ์† - ๊ฐ์ฒด์—๋Š” ์žˆ๊ณ , DB์—๋Š” ์—†๋‹ค.

2.์—ฐ๊ด€๊ด€๊ณ„ - ๊ฐ์ฒด๋Š” ์ฐธ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ํ…Œ์ด๋ธ”์€ ์™ธ๋ž˜ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

3.๋ฐ์ดํ„ฐํƒ€์ž…

4.๋ฐ์ดํ„ฐ ์‹๋ณ„ ๋ฐฉ๋ฒ•

์ด๊ฒƒ๋“ค์ด ๋‹ค๋ฅด๋‹ค.

 

๊ฐ์ฒด๋ฅผ ์ž๋ฐ” ์ปฌ๋ ‰์…˜์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ DB์— ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์—†์„๊นŒ?

๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ JPA(Java Persistence API)์ด๋‹ค. ์ผ์ข…์˜ ORM์ธ๋ฐ, ๊ทธ๋Ÿผ ORM์€?

ORM(Object-relational mapping) ์ฆ‰, ๊ฐ์ฒด๋Š” ๊ฐ์ฒด๋Œ€๋กœ ์„ค๊ณ„ํ•˜๊ณ , RDB๋Š” RDB๋Œ€๋กœ ์„ค๊ณ„ํ•˜๊ณ  ๋‚˜์„œ, ์ค‘๊ฐ„์—์„œ ORM์ด ๋งคํ•‘ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

JPA ์†Œ๊ฐœ

์ตœ์ดˆ์—๋Š” EJB(์ž๋ฐ” ํ‘œ์ค€ ์—”ํ‹ฐํ‹ฐ ๋นˆ)๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ, ๋„ˆ๋ฌด ๋ถˆํŽธํ•ด์„œ ๊ทธ๊ฑธ ๋ณด์™„ํ•œ ํ•˜์ด๋ฒ„๋„ค์ดํŠธ(์˜คํ”ˆ์†Œ์Šค)๊ฐ€ ๋‚˜์™”๊ณ , ์ด๋ฅผ ์ž๋ฐ”์ง„์˜์—์„œ ๋‹ค์‹œ ๋ณด์™„ํ•˜์—ฌ JPA(์ž๋ฐ” ํ‘œ์ค€)์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

JPA๋Š” ํ‘œ์ค€ ๋ช…์„ธ์ด๋‹ค. ์ฆ‰, ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ชจ์Œ์ด๋ผ๋Š” ๋ง

์ด๋ฅผ ๊ตฌํ˜„ํ•œ๊ฒƒ์ด Hibernate,EclipseLink๋“ฑ ์ด๊ณ , Hibernate๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ์ด์šฉ๋œ๋‹ค.

 

JPA์˜ ์žฅ์ ์€

SQL์ค‘์‹ฌ ๊ฐœ๋ฐœ์—์„œ ๊ฐ์ฒด ์ค‘์‹ฌ์œผ๋กœ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

์ƒ์‚ฐ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜,์„ฑ๋Šฅ(1์ฐจ ์บ์‹œ์™€ ๋™์ผ์„ฑ ๋ณด์žฅ) ์ด ์ข‹์•„์ง„๋‹ค.

ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ๋ถˆ์ผ์น˜๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค (์ƒ์†, ์—ฐ๊ด€๊ด€๊ณ„, ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„ )

๋ฐ์ดํ„ฐ ์ ‘๊ทผ ์ถ”์ƒํ™”์™€ ๋ฒค๋” ๋…๋ฆฝ์„ฑ

ํ‘œ์ค€