๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
TIL

03/18(์›”) ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Java 58์ผ์ฐจ TIL - ORM์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ฟผ๋ฆฌ๊ฐ€ ๋ณต์žกํ•ด ์งˆ ๋•Œ

by ๊ฐ์ž๊ฐœ๋ฐœ๊พผ 2024. 3. 18.

 

๐Ÿ“–  ์˜ค๋Š˜์˜ ํ•™์Šต ํ‚ค์›Œ๋“œ

  • ORM

 

๐Ÿฅ”  ORM์„ ์‚ฌ์šฉํ•  ๋•Œ

ORM์€ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด์™€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋งคํ•‘ํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด ์ง€ํ–ฅ์ ์ธ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์œผ๋ฉฐ, DB์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ๊ฐ„์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ฐ„๋‹จํžˆ, ORM์€ ๊ฐ์ฒด์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ„์˜ ๋ฒˆ์—ญ๊ธฐ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

ORM์„ ์‚ฌ์šฉํ•˜๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ์ฟผ๋ฆฌ ์ž‘์„ฑ๊ณผ DB ์™€์˜ ์ƒํ˜ธ ์ž‘์šฉ์ด ํ›จ์”ฌ ํŽธ๋ฆฌํ•ด์ง€์ง€๋งŒ,

๋ณต์žกํ•œ ์ฟผ๋ฆฌ์˜ ๊ฒฝ์šฐ์—” ORM ๋งŒ์œผ๋กœ๋Š” ์ฒ˜๋ฆฌํ•˜๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค.

์ด๋•Œ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

1. ORM์˜ Query Builder ์‚ฌ์šฉ : ๋Œ€๋ถ€๋ถ„์˜ ORM์€ Query Builder๋ฅผ ์ œ๊ณตํ•˜์—ฌ SQL ์ฟผ๋ฆฌ๋ฅผ ๋™์ ์œผ๋กœ
์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด์„œ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฅผ ๋”์šฑ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

2. ORM์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ ๊ธฐ๋Šฅ : ์ผ๋ถ€ ORM์€ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ์บ์‹ฑ, ์ง€์—ฐ ๋กœ๋”ฉ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ์˜ ๋ถ€ํ•˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒค๋”ฉ : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒค๋”ฉ์€ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ถ„ํ• ํ•˜์—ฌ ์ฒ˜๋ฆฌ ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐ์‹œํ‚ค๋Š”

๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š”๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

4. ์ธ๋ฑ์Šค ๋ฐ ์„ฑ๋Šฅ ํŠœ๋‹ : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์ฟผ๋ฆฌ๋ฅผ ํŠœ๋‹ํ•  ์ˆ˜

์žˆ์Šต๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ์ฟผ๋ฆฌ์˜ ๊ฒฝ์šฐ ์„ฑ๋Šฅ ํŠœ๋‹์ด ์ค‘์š”ํ•˜๊ณ , ORM์ด ์ƒ์„ฑํ•˜๋Š” ์ฟผ๋ฆฌ์˜ ์‹คํ–‰ ๊ณ„ํš์„ ๋ถ„์„ํ•˜์—ฌ ์ตœ์ ํ™” ๊ฐ€๋Šฅ

 

5. Stored Procedure : ์ €์žฅ ํ”„๋กœ์‹œ์ ธ๋Š” DB์— ๋ฏธ๋ฆฌ ์ •์˜๋œ SQL ์ฟผ๋ฆฌ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•จ.

๋ณต์žกํ•œ ๋กœ์ง์ด๋‚˜ ์—ฐ์‚ฐ์„ DB ์ธก์—์„œ ์ฒ˜๋ฆฌํ•˜๊ณ ์ž ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ORM๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜์ง€๋งŒ,

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ข…์†์„ฑ์„ ์ฆ๊ฐ€์‹œํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ฃผ์˜ ํ•„์š”

 

6. Native SQL : ORM์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ๋„ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” Native SQL์„ ์ง์ ‘ ์ž‘์„ฑํ•˜์—ฌ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ORM์˜ ์ œํ•œ ์‚ฌํ•ญ์„ ๊ทน๋ณตํ•˜๋ฉด์„œ๋„ ํ•„์š”ํ•œ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ, Native SQL์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ORM์ด ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ์™€ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋””.

 

๐Ÿ“š  ์˜ค๋Š˜์˜ ํšŒ๊ณ 

์ƒˆ๋กญ๊ฒŒ ๋ฐฐ์šฐ๋Š”๊ฒŒ ๋„ˆ๋ฌด ๋งŽ์Šต๋‹ˆ๋‹ค. ๋จธ๋ฆฌ๊ฐ€ ํ„ฐ์ ธ์š”!!