๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Spring๐Ÿ€/๊ฐœ๋…์›๋ฆฌ

ORM, JPA, MyBatis

by @ENFJ 2024. 3. 12.

์˜์†์„ฑ(Persistence) ๋“ฑ์žฅ!

๋ฐ์ดํ„ฐ๋“ค์ด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜์–ด๋„ ์‚ฌ๋ผ์ง€์ง€ ์•Š๊ณ  ์–ด๋–ค ๊ณณ์— ์ €์žฅ๋˜๋Š” ๊ฐœ๋…์„ ์˜์†์„ฑ(Persistence) ์ด๋ผ๊ณ  ํ•œ๋‹ค.

Issue_1

์ž๋ฐ”์—์„œ ๋ฐ์ดํ„ฐ์˜ ์˜์†์„ฑ์„ ์œ„ํ•œ JDBC ๋ฅผ ์ง€์›ํ•ด์ฃผ๋Š”๋ฐ, ์ด๋Š” ๋งคํ•‘ ์ž‘์—…์„ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ผ์ผ์ด ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ๋‹ค.

SQL Mapper ์™€ ORM ์˜ ๋“ฑ์žฅ!

SQL Mapper ์™€ **ORM**์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ JDBC Programming ์„ ํ•˜์ง€ ์•Š๋„๋ก ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด์ฃผ๋Š” Persistence Framework ์ข…๋ฅ˜์ด๋‹ค.

Issue_2

๊ธฐ์กด JDBC ๋งŒ์˜ ์‚ฌ์šฉ์œผ๋กœ ์ฟผ๋ฆฌ ๋ฌธ์„ ๋งŒ๋“ค์–ด ์š”์ฒญํ•˜๋Š” ๊ณผ์ •์€ ์ฟผ๋ฆฌ ๋ฌธ์ด ์กฐ๊ธˆ๋งŒ ๊ธธ์–ด์ ธ๋„ ๊ด€๋ฆฌ๊ฐ€ ํž˜๋“ค๊ณ  ๋ฒˆ๊ฑฐ๋กญ๋‹ค.

JPA , MyBatis ๋“ฑ์žฅ!

๋”ฐ๋ผ์„œ JPA ์™€ MyBatis ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์ •๋ฆฌ

Persistence Framework : SQL Mapper, ORM(Object Relational Mapping

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ : JPA, MyBatis


SQL Mapper VS ORM ์ •๋ฆฌ

  • SQL Mapper
    1. SQL ๋ฌธ์„ ์ง์ ‘ ์ž‘์„ฑํ•˜๊ณ  ์ฟผ๋ฆฌ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์–ด๋– ํ•œ ๊ฐ์ฒด์— ๋งคํ•‘ํ• ์ง€ ๋ฐ”์ธ๋”ฉ ํ•˜๋Š” ๋ฐฉ๋ฒ•
    2. DBMS์— ์ข…์†์ ์ธ ๋ฌธ์ œ
    3. Ex) jdbcTemplate , MyBatis
  • Object ์™€ SQL ์˜ ํ•„๋“œ๋ฅผ ๋งคํ•‘ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์ฒดํ™”ํ•˜๋Š” ๊ธฐ์ˆ 
  • ORM(Object Relational Mapping)
    • Object ์™€ DB ํ…Œ์ด๋ธ”์„ ๋งคํ•‘ ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์ฒดํ™” ํ•˜๋Š” ๊ธฐ์ˆ 
    1. ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ˜๋ณต์ ์ธ SQL์„ ์ง์ ‘ ์ž‘์„ฑํ•˜์ง€ ์•Š์Œ.
    2. DBMS์— ์ข…์†์ ์ด์ง€ ์•Š์Œ
    3. ๋ณต์žกํ•œ ์ฟผ๋ฆฌ์˜ ๊ฒฝ์šฐ JPQL์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ SQL Mapper ๋ฅผ ํ˜ผ์šฉํ•˜์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.

JPA ์™€ MyBatis_์ •๋ฆฌ

  • JPA(ORM)
    • ์ž๋ฐ” ORM์˜ ๊ธฐ์ˆ  ํ‘œ์ค€
    • ๋Œ€ํ‘œ์ ์ธ ์˜คํ”ˆ์†Œ์Šค๋กœ Hibernate
    • CRUD ๋ฉ”์†Œ๋“œ ๊ธฐ๋ณธ ์ œ๊ณต
    • ์ฟผ๋ฆฌ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š์•„๋„ ๋จ
    • 1์ฐจ ์บ์‹ฑ, ์“ฐ๊ธฐ์ง€์—ฐ, ๋ณ€๊ฒฝ๊ฐ์ง€, ์ง€์—ฐ๋กœ๋”ฉ ์ œ๊ณต
    • MyBatis๋Š” ์ฟผ๋ฆฌ๊ฐ€ ์ˆ˜์ •๋˜์–ด ๋ฐ์ดํ„ฐ ์ •๋ณด๊ฐ€ ๋ฐ”๋€Œ๋ฉด ๊ทธ์— ์‚ฌ์šฉ ๋˜๊ณ  ์žˆ๋˜ DTO์™€ ํ•จ๊ป˜ ์ˆ˜์ •ํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š” ๋ฐ˜๋ฉด์—, JPA ๋Š” ๊ฐ์ฒด๋งŒ ๋ฐ”๊พธ๋ฉด ๋œ๋‹ค.
    • ์ฆ‰, ๊ฐ์ฒด ์ค‘์‹ฌ์œผ๋กœ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ
    • but ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋Š” ํ•ด๊ฒฐ์ด ์–ด๋ ค์›€
  • MyBatis (SQL Mapper)

'Spring๐Ÿ€ > ๊ฐœ๋…์›๋ฆฌ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

ID์†์„ฑ ์™€ NAME ์†์„ฑ  (1) 2024.04.03
Controller vs @Restcontroller ์ฐจ์ด์   (0) 2024.03.18