@MappedSuperclass

@MappedSuperclass

๋ถ€๋ชจ ํด๋ž˜์Šค๋Š” ํ…Œ์ด๋ธ”๊ณผ ๋งคํ•‘ํ•˜์ง€ ์•Š๊ณ  ๋ถ€๋ชจ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š” ์ž์‹ ํด๋ž˜์Šค์—๊ฒŒ ๋งคํ•‘ ์ •๋ณด๋งŒ ์ œ๊ณตํ•˜๊ณ  ์‹ถ์œผ๋ฉด @MappedSuperclass๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

@Entity์™€ ๋‹ค๋ฅธ ์ ์„ ๋ณด์ž๋ฉด @Entity๋Š” ์ง„์งœ ํ…Œ์ด๋ธ”์— ๋งคํ•‘๋˜๋Š” ๋ถ€๋ถ„์ด์ง€๋งŒ @MappedSuperclass ๋Š” ์‹ค์ œ ํ…Œ์ด๋ธ”๊ณผ ๋งคํ•‘๋˜์ง€๋Š” ์•Š๋Š” ๋‹ค๋Š” ์ ์ด๊ณ  ๋‹จ์ˆœํžˆ ๋งคํ•‘ ์ •๋ณด๋ฅผ ์ƒ์†ํ•  ๋ชฉ์ ์œผ๋กœ๋งŒ ์‚ฌ์šฉ๋œ๋‹ค.

์‚ฌ์šฉ๋˜๋Š” ์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด

package com.example.jpa_project.ch07Example;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;

public class MappedSuperclassMapping {

    @MappedSuperclass
    public abstract class BaseEntity{
        @Id
        @GeneratedValue
        private Long id;

        private String name;
    }

    @Entity
    public class Member extends BaseEntity{
        private String email;
    }

    @Entity
    public class Seller extends BaseEntity{
        private String shopName;
    }
}

๊ฐ Member์™€ Seller๋Š” BaseEntity์— ์žˆ๋Š” id, name์„ ๊ณตํ†ต์ ์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๊ฒŒ ๋œ๋‹ค.

BaseEntity์—๋Š” ๊ฐ์ฒด๋“ค์ด ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ณตํ†ต ๋งคํ•‘ ์ •๋ณด๋ฅผ ์ •์˜ํ–ˆ๊ณ  ์ž์‹ ์—”ํ‹ฐํ‹ฐ๋“ค์€ ์ƒ์†์„ ํ†ตํ•ด์„œ BaseEntity์— ์žˆ๋Š” ๋งคํ•‘ ์ •๋ณด๋ฅผ ๋ฌผ๋ ค๋ฐ›๊ฒŒ ๋˜์—ˆ๋‹ค.

๋งŒ์•ฝ์— ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์‹ซ๊ณ  ์ปฌ๋Ÿผ์„ ์žฌ์ •์˜๋ฅผ ํ•ด์ค˜์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” @AttributeOverrides, @AttributeOverride๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ,

์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ์žฌ์ •์˜ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” @AssociationOverrides, @AssociationOverride๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์ •๋ฆฌํ•ด๋ณด๋ฉด

  • @MappedSuperclass๋Š” ํ…Œ์ด๋ธ”๊ณผ ๋งคํ•‘๋˜์ง€ ์•Š๊ณ  ์ž์‹ ํด๋ž˜์Šค์— ์—”ํ‹ฐํ‹ฐ์˜ ๋งคํ•‘ ์ •๋ณด๋ฅผ ์ƒ์†ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

  • @MappedSuperclass๋กœ ์ง€์ •ํ•œ ํด๋ž˜์Šค๋Š” ์—”ํ‹ฐํ‹ฐ๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— em.find, JPQL๋กœ ๊ฒ€์ƒ‰์ด ๋ถˆ๊ฐ€๋Šฅ

  • ์ด ํด๋ž˜์Šค๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•ด์„œ ์‚ฌ์šฉํ•  ์ผ์€ ์—†์„ ์˜ˆ์ •์ด๊ธฐ ๋•Œ๋ฌธ์— ์ถ”์ƒ ํด๋ž˜์Šค๋กœ ์ƒ์„ฑ

Last updated

Was this helpful?