ORM

ORM์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

  • ORM(Object Relation Mapping)

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

  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํ…Œ์ด๋ธ”์€ ์ƒ์†, ๋‹คํ˜•์„ฑ ๊ฐ™์€ ๊ฐ์ฒด์ง€ํ–ฅ์  ํŠน์„ฑ์ด ์—†์–ด Java์™€ ๊ฐ™์€ ๊ฐ์ฒด์ง€ํ–ฅ์  ์–ธ์–ด๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ์‰ฝ์ง€ ์•Š๋‹ค.

  • ORM์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ์ฒด์ง€ํ–ฅ์ ์œผ๋กœ RDB๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์ž๋ฐ”๋Š” JPA๋ผ๋Š” ์ž๋ฐ” ์ง„์˜์˜ ORM ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๋Œ€ํ‘œ์ ์ธ ๊ตฌํ˜„์ฑ„๋กœ Hibernate๊ฐ€ ์žˆ๋‹ค.

ORM, JPA, Hibernate ์žฅ๋‹จ์ 

  • [์žฅ์ ]

    • ๊ธฐ๋ณธ์ ์ธ CRUD๋Š” ์ด๋ฏธ ๊ตฌํ˜„๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ์ง‘์ค‘ํ•˜๊ณ  ๊ฐ์ฒด์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

    • ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ๋งŒ์œผ๋กœ ์ฟผ๋ฆฌ๊ฐ€ ์ „๋‹ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์‚ฐ์„ฑ์ด ํ–ฅ์ƒ๋˜๊ณ , ์œ ์ง€๋ณด์ˆ˜ ๋น„์šฉ์ด ์ค„์–ด๋“ ๋‹ค.

    • ํŠน์ • DB์— ์˜์กดํ•˜์ง€ ์•Š๋Š”๋‹ค.

  • [๋”˜์ ]

    • ์ง์ ‘ SQL์„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” ๋А๋ฆฌ๋‹ค.

    • ๋ณต์žกํ•œ ์ฟผ๋ฆฌ(๋™์  ์ฟผ๋ฆฌ)๋Š” ๋ฉ”์„œ๋“œ๋งŒ์œผ๋กœ ์ฒ˜๋ฆฌ๊ฐ€ ํž˜๋“ค๋‹ค.

      • MyBatis๋‚˜ QueryDSL์„ ์‚ฌ์šฉํ•ด ๋™์  ์ฟผ๋ฆฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

MyBatis์™€ JPA๋ฅผ ๋น„๊ตํ•ด ์ฃผ์„ธ์š”.

MyBatis

  • [์žฅ์ ]

    • ๋ณต์žกํ•œ ์ฟผ๋ฆฌ ๋˜๋Š” ํŠน์ • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ตœ์ ํ™”๋œ ์ฟผ๋ฆฌ ์ž‘์„ฑ์— ์šฉ์ดํ•˜๋‹ค.

    • SQL์„ ์ง์ ‘ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— SQL์„ ์ž˜ ์•„๋Š” ๊ฒฝ์šฐ, JPA๋ณด๋‹ค ํ•™์Šต์— ์šฉ์ดํ•˜๊ณ  ์‰ฝ๊ฒŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

  • [๋‹จ์ ]

    • CRUD ๊ฐ™์€ ๋‹จ์ˆœํ•œ ์ฝ”๋“œ์— ๋Œ€ํ•ด ๋ฐ˜๋ณต์ ์ธ ์ˆ˜์ž‘์—…์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์ด ๋–จ์–ด์ง€๊ณ , ์œ ์ง€๋ณด์ˆ˜๋„ ํž˜๋“ค์–ด์ง„๋‹ค.

    • ํŠน์ • DB์— ์ข…์†์ ์ด๊ธฐ ๋•Œ๋ฌธ์—, DB ๋ณ€๊ฒฝ์ด ์–ด๋ ต๋‹ค.

JPA

  • [์žฅ์ ]

    • Java์˜ ํ‘œ์ค€์„ ์ด์šฉํ•˜๋ฏ€๋กœ ํŠน์ • ์ œํ’ˆ์— ์ข…์†๋˜์ง€ ์•Š๊ณ , ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค.

    • ๊ฐ์ฒด์™€ ํ…Œ์ด๋ธ”์„ ์ž๋™์œผ๋กœ ๋งคํ•‘ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์ด ํ–ฅ์ƒ๋œ๋‹ค.

    • ํŠน์ • DB์— ์ข…์†์ ์ด์ง€ ์•Š์•„ DB ๋ณ€๊ฒฝ์— ์ œ์•ฝ์ด ์—†๋‹ค.

  • [๋‹จ์ ]

    • MyBatis์— ๋น„ํ•ด ๋ฐฐ์šฐ๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค.

    • ๋ณต์žกํ•œ ์ฟผ๋ฆฌ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.

JPA์˜ ์žฅ์ ์ด ๊ฐ€์ ธ๋‹ค์ฃผ๋Š” ์ด์ ์ด ๋„ˆ๋ฌด ํฌ๊ธฐ ๋•Œ๋ฌธ์— ์ตœ๊ทผ์—๋Š” JPA๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ธฐ ์–ด๋ ต๋‹ค๋Š” ๋‹จ์ ๋„ QueryDSL ์˜คํ”ˆ์†Œ์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ณด์™„์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ฌผ๋ก  ํ•„์š”์— ๋”ฐ๋ผ ๋‘ ๊ฐ€์ง€ ๊ธฐ์ˆ  ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

์ฐธ๊ณ 

Last updated