๐ŸŒฑ Spring Boot ์‹œ์ž‘ํ•˜๊ธฐ 15 - ORM(Object-Relational Mapping) ๊ฐœ๋… ์ดํ•ด

๊น€์„ธํ˜„ยท2025๋…„ 10์›” 23์ผ

Spring

๋ชฉ๋ก ๋ณด๊ธฐ
15/19

๋‚ ์งœ:2025-10-23


ํ•™์Šต ๋ชฉํ‘œ

  • ORM์˜ ์ •์˜์™€ ํ•ต์‹ฌ ๊ฐœ๋… ์ดํ•ด
  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ„ ํŒจ๋Ÿฌ๋‹ค์ž„ ๋ถˆ์ผ์น˜ ๋ฌธ์ œ ํ•™์Šต

๐Ÿ”น ORM์˜ ์ •์˜์™€ ๊ฐœ๋…

ORM

  • ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜ ๊ธฐ๋ฒ•

  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๊ฐ์ฒด์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ” ์„ ์ž๋™์œผ๋กœ ๋งคํ•‘

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ข…๋ฅ˜์— ๊ด€๊ณ„์—†์ด ์ผ๊ด€๋œ ์ธํ„ฐํŽ˜์ด์Šค ์ œ๊ณต


๐Ÿ’ก ํ•ต์‹ฌ ํฌ์ธํŠธ

  • ์Šคํ”„๋ง ์ž…์žฅ์—์„œ๋Š” MySQL, PostgreSQL, Oracle, MSSQL, H2 ๋“ฑ DB ์ข…๋ฅ˜๊ฐ€ ๋‹ฌ๋ผ๋„ ์ƒ๊ด€ ์—†์Œ
  • ๊ฐœ๋ฐœ์ž๋Š” ์ง์ ‘ SQL์„ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ์ž๋ฐ” ์ฝ”๋“œ๋กœ DB ์กฐ์ž‘ ๊ฐ€๋Šฅ
  • ORM์€ ์ถ”์ƒํ™”๋œ ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• 

๐Ÿ”น ORM๊ณผ ํŒจ๋Ÿฌ๋‹ค์ž„ ๋ถˆ์ผ์น˜ ํ•ด๊ฒฐ

๐Ÿ’ก ํŒจ๋Ÿฌ๋‹ค์ž„ ๋ถˆ์ผ์น˜

  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํ…Œ์ด๋ธ” ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ
  • ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๊ฐ์ฒด ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ
  • ๋‘ ๊ตฌ์กฐ ๊ฐ„์˜ ์ฐจ์ด๋ฅผ ํŒจ๋Ÿฌ๋‹ค์ž„ ๋ถˆ์ผ์น˜๋ผ๊ณ  ๋ถ€๋ฆ„

๐Ÿ”น ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์˜ˆ์‹œ

Movieํ…Œ์ด๋ธ”
idtitle
1ํŒŒ๋ฌ˜
2ํ™ฉํ•ด

MovieReview ํ…Œ์ด๋ธ”

idcontentmovie_id
1ํŒŒ๋ฌ˜ ์—„์ฒญ ์žฌ๋ฐŒ์–ด์š”!1
2ํŒŒ๋ฌ˜ ๋˜ ๋ณด๋Ÿฌ ๊ฐˆ๊ฑฐ์ž„ใ…‹ใ…‹1

idtitle
1ํŒŒ๋ฌ˜, ํ™ฉํ•ด, ๋ฒ”์ฃ„๋„์‹œ
2๊ธฐ์ƒ์ถฉ, ํžˆ๋ง๋ผ์•ผ, ๋…์ „, ๋ช…๋Ÿ‰, ๊ดด๋ฌผ
  • โŒ ํ•œ ์นธ(cell)์—๋Š” ๊ฐ์ฒด ํ˜•์‹์ด๋‚˜ ๋ฆฌ์ŠคํŠธ ๋ฐ์ดํ„ฐ ์‚ฝ์ž… ๋ถˆ๊ฐ€

๐Ÿ”น ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์˜ˆ์‹œ

 Movie ํด๋ž˜์Šค

    public class Movie {
    private Long id;
    private String title;
    private List<MovieReview> movieReviews;
    }


    MovieReview ํด๋ž˜์Šค

    public class MovieReview {
    private Long id;
    private String content;
    private Movie movie;
    }
  • โœ… ์ž๋ฐ” ์ฝ”๋“œ์—์„œ๋Š” ํ•„๋“œ ๊ฐ’์— ๊ฐ์ฒด๋‚˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ์Œ


๐Ÿ”น ํŒจ๋Ÿฌ๋‹ค์ž„ ๋ถˆ์ผ์น˜ ์š”์•ฝ

๊ตฌ๋ถ„๊ด€๊ณ„ํ˜• DB๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
ํ•œ ์นธ ๋ฐ์ดํ„ฐString, Integer ๋“ฑ ๋‹จ์ผ ๊ฐ’๊ฐ์ฒด, ๋ฆฌ์ŠคํŠธ ๋“ฑ ๊ฐ€๋Šฅ
๊ตฌ์กฐํ…Œ์ด๋ธ” ๊ธฐ๋ฐ˜๊ฐ์ฒด ๊ธฐ๋ฐ˜
๋ฌธ์ œ์ ๊ฐ์ฒด๋‚˜ ์ปฌ๋ ‰์…˜ ์ €์žฅ ๋ถˆ๊ฐ€DB์™€ ์ง์ ‘ ์—ฐ๋™ ๋ถˆํŽธ

๐Ÿ’ก ORM์˜ ์—ญํ• :

-์ค‘๊ฐ„ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์กด์žฌํ•˜๋ฉฐ DB์™€ ๊ฐ์ฒด์ง€ํ–ฅ ๊ฐ„ ๋ถˆ์ผ์น˜ ํ•ด๊ฒฐ
-DB๋ฅผ ์ž๋ฐ” ์ฝ”๋“œ์˜ ์ผ๋ถ€์ฒ˜๋Ÿผ ํŽธํ•˜๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Œ


์ •๋ฆฌ

  • ORM์€ ๊ฐ์ฒด์™€ ํ…Œ์ด๋ธ”์„ ๋งคํ•‘ํ•˜์—ฌ ๊ฐœ๋ฐœ์ž์˜ DB ์กฐ์ž‘ ํŽธ์˜์„ฑ์„ ๋†’์ด๋Š” ๊ธฐ์ˆ 
  • ๊ด€๊ณ„ํ˜• DB์™€ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ„ ํŒจ๋Ÿฌ๋‹ค์ž„ ๋ถˆ์ผ์น˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ
  • ORM ์‚ฌ์šฉ ์‹œ, ๊ฐœ๋ฐœ์ž๋Š” DB ์ข…๋ฅ˜์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
profile
๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ•œ ๊ฑธ์Œ

0๊ฐœ์˜ ๋Œ“๊ธ€