[์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ] 6. ์ƒ์†๊ด€๊ณ„ ๋งคํ•‘ / @Inheritance

2023. 2. 28. 17:29ยทSpring/Spring JPA ๊ธฐ๋ณธ

 

์ƒ์†๊ด€๊ณ„ ๋งคํ•‘

 

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

 

 

๊ฐ์ฒด ์ƒ์† ๊ตฌ์กฐ

 

๊ฐ์ฒด์—๋Š” ์ƒ์†๊ด€๊ณ„๊ฐ€ ์žˆ๋‹ค . 

 

 

์Šˆํผํƒ€์ž…-์„œ๋ธŒํƒ€์ž… ๋…ผ๋ฆฌ ๋ชจ๋ธ

 

 

ํ•˜์ง€๋งŒ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ƒ์† ๊ด€๊ณ„๊ฐ€ ์—†๋‹ค.

 

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ์Šˆํผํƒ€์ž…,์„œ๋ธŒํƒ€์ž… ๊ด€๊ณ„๋ผ๋Š” ๋ชจ๋ธ๋ง ๊ธฐ๋ฒ•์ด ๊ฐ์ฒด ์ƒ์†๊ณผ ์œ ์‚ฌํ•˜๋‹ค. 

 

 

 

 

์Šˆํผํƒ€์ž… ์„œ๋ธŒํƒ€์ž… ๋…ผ๋ฆฌ ๋ชจ๋ธ์„ ์‹ค์ œ ๋ฌผ๋ฆฌ ๋ชจ๋ธ๋กœ ๊ตฌํ˜„ํ•˜๋Š” 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

 

JOINED , SINGLE_TABLE , TABLE_PER_CLASS 

 

 

@Inheritance ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ€๋ชจ ํด๋ž˜์Šค์—์„œ ์ „๋žต์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

JOINED

 

 

 

๊ฐ๊ฐ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๊ณ  ์กฐํšŒํ•  ๋•Œ๋Š” join ํ•˜์—ฌ ๊ฐ€์ ธ์˜จ๋‹ค 

 

DTYPE : ํƒ€์ž…์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ์ปฌ๋Ÿผ์ด๋‹ค. 

 

@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn
public class Item {

 

@DiscriminatorColumn : ๋ถ€๋ชจ ํด๋ž˜์Šค์—์„œ ์„ ์–ธ. ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ์šฉ๋„์˜ ์ปฌ๋Ÿผ์ด๋‹ค. ๊ด€๋ก€๋Š” default = DTYPE

 

@DiscriminatorValue("A")
public class Album extends Item

 

@DiscriminatorValue("name") : ํ•˜์œ„ ํด๋ž˜์Šค์— ์„ ์–ธ. ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ์Šˆํผํƒ€์ž…์˜ ๊ตฌ๋ถ„ ์ปฌ๋Ÿผ์— ์ €์žฅํ•  ๊ฐ’์„ ์ง€์ •ํ•œ๋‹ค.

 

์–ด๋…ธํ…Œ์ด์…˜์„ ์„ ์–ธํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ํด๋ž˜์Šค ์ด๋ฆ„์ด ๋“ค์–ด๊ฐ„๋‹ค.

 

 

 

 

 

 

SINGLE_TABLE

@Inheritance(strategy = InheritanceType.SINGLE_TABLE)

 

 

ํ…Œ์ด๋ธ” ํ•˜๋‚˜์— ๋‹ค ๋„ฃ์–ด๋‘๊ณ  DTYPE ์œผ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค. 

 

@DiscriminatorColumn

 

๋‹จ์ผ ํ…Œ์ด๋ธ” ์ „๋žต์€ DTYPE ์ด ํ•„์ˆ˜๋กœ ์ƒ์„ฑ๋œ๋‹ค. 

 

@DiscriminatorColumn ์ƒ๋žตํ•ด๋„ ์ž๋™์œผ๋กœ DTYPE ์ƒ์„ฑ 

 

 

์ƒ๊ด€์—†๋Š” ๋ฐ์ดํ„ฐ๋“ค์€ null ๋กœ ๋“ค์–ด๊ฐ„๋‹ค . 

 

 

 

 

TABLE_PER_CLASS 

@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)

 

 

๋ถ€๋ชจ ํ…Œ์ด๋ธ”์„ ์—†์• ๋ฒ„๋ฆฌ๊ณ  ๊ทธ ์†์„ฑ๋“ค์„ ๋ฐ‘์œผ๋กœ ๋‚ด๋ฆฐ๋‹ค .

 

๊ตฌํ˜„ ํด๋ž˜์Šค๋งˆ๋‹ค ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๋Š” ์ „๋žต 

 

์ด ์ „๋žต์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„์ž์™€ ORM ์ „๋ฌธ๊ฐ€ ๋‘˜ ๋‹ค ์ถ”์ฒœํ•˜์ง€ ์•Š๋Š”๋‹ค. 

 

 

์กฐ์ธ ์ „๋žต์œผ๋กœ ์„ค๊ณ„๋ฅผ ํ•˜๋‹ค๊ฐ€ ๋‹จ์ˆœํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅ์„ฑ์ด ์—†๋‹ค๋ฉด  ๋‹จ์ผ ํ…Œ์ด๋ธ” ์ „๋žต์„ ์ด์šฉํ•˜์ž ! 

 

 

 

 

 

https://www.inflearn.com/course/ORM-JPA-Basic/dashboard

 

 

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

JPA๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๊ฑฐ๋‚˜, ์‹ค๋ฌด์—์„œ JPA๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๊ธฐ๋ณธ ์ด๋ก ์ด ๋ถ€์กฑํ•˜์‹  ๋ถ„๋“ค์ด JPA์˜ ๊ธฐ๋ณธ ์ด๋ก ์„ ํƒ„ํƒ„ํ•˜๊ฒŒ ํ•™์Šตํ•ด์„œ ์ดˆ๋ณด์ž๋„ ์‹ค๋ฌด์—์„œ ์ž์‹ ์žˆ๊ฒŒ JPA๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค., - ๊ฐ•์˜ ์†Œ๊ฐœ | ์ธํ”„๋Ÿฐ

www.inflearn.com

 

 

 

 

 

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Spring > Spring JPA ๊ธฐ๋ณธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ] 8. ํ”„๋ก์‹œ  (0) 2023.03.01
[์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ] 7. @MappedSuperclass  (0) 2023.02.28
[์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ] 5. ๋‹ค๋Œ€์ผ[N:1] / ์ผ๋Œ€๋‹ค[1:N] / ์ผ๋Œ€์ผ[1:1] / ๋‹ค๋Œ€๋‹ค[N:M]  (0) 2023.02.27
[์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ] 4. ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘  (0) 2023.02.26
[์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ] 3. ์—”ํ‹ฐํ‹ฐ ๋งคํ•‘  (0) 2023.02.25
'Spring/Spring JPA ๊ธฐ๋ณธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ] 8. ํ”„๋ก์‹œ
  • [์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ] 7. @MappedSuperclass
  • [์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ] 5. ๋‹ค๋Œ€์ผ[N:1] / ์ผ๋Œ€๋‹ค[1:N] / ์ผ๋Œ€์ผ[1:1] / ๋‹ค๋Œ€๋‹ค[N:M]
  • [์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ] 4. ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘
hello_u
hello_u
  • hello_u
    ๐Ÿ˜œ
    hello_u
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๐Ÿ˜œ (345)
      • Hardware (2)
        • BMC (2)
      • Spring (109)
        • Spring ์ž…๋ฌธ (20)
        • Spring ๊ธฐ๋ณธ (27)
        • Spring MVC (18)
        • Spring DB (22)
        • Spring JPA ๊ธฐ๋ณธ (16)
        • Spring JPA ํ™œ์šฉ (6)
      • Develop (27)
        • DB (8)
        • JAVA (4)
        • Web (2)
        • Python (7)
        • OSS (2)
        • Git (2)
        • API (2)
      • Algorithm (155)
        • CodeUp ๊ธฐ์ดˆ (44)
        • ํŒŒ์ด์ฌ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (64)
        • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (4)
        • SWEA (30)
        • Softeer (10)
        • BOJ (2)
      • CS (9)
        • ์ปดํ“จํ„ฐ์ผ๋ฐ˜ (3)
        • ์šด์˜์ฒด์ œ (3)
        • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (0)
        • ์ •๋ณดํ†ต์‹  (1)
        • ์ž๋ฃŒ๊ตฌ์กฐ (1)
        • ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™ (1)
        • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (0)
        • ์ตœ์‹  ๋””์ง€ํ„ธ, ์ผ๋ฐ˜์ƒ์‹ (0)
      • ์ž๊ฒฉ์ฆ (41)
        • ์ •๋ณด๋ณด์•ˆ๊ธฐ์‚ฌ (9)
        • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (22)
        • ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ 1๊ธ‰ (3)
        • SQLD (7)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
hello_u
[์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ] 6. ์ƒ์†๊ด€๊ณ„ ๋งคํ•‘ / @Inheritance
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”