JPA @MappedSuperClass


@MappedSuperClass


複数のオブジェクト/テーブルに共通の情報がある場合、プレゼンテーションでは、これらのオブジェクト/テーブルにColumnを簡単に作成できます.
これは、リレーションシップマッピングを継承するのではなく、継承した親の子クラスにのみマッピング情報を提供します.
検索、検索不可

BaseEntity

@MappedSuperclass
public abstract class BaseEntity{

    private String createdBy;
    private LocalDateTime createdDate;
    private String lastModifiedBy;
    @Column(name = "update_date") //@Column 애너테이션을 통해 BaseEntity를 상속받는 모든 테이블들의 lastModifiedDate column을 필요한 대로 한번에 바꿀수 있음
    private LocalDateTime lastModifiedDate;

    public String getCreatedBy() {
        return createdBy;
    }

    public void setCreatedBy(String createdBy) {
        this.createdBy = createdBy;
    }

    public LocalDateTime getCreatedDate() {
        return createdDate;
    }

    public void setCreatedDate(LocalDateTime createdDate) {
        this.createdDate = createdDate;
    }

    public String getLastModifiedBy() {
        return lastModifiedBy;
    }

    public void setLastModifiedBy(String lastModifiedBy) {
        this.lastModifiedBy = lastModifiedBy;
    }

    public LocalDateTime getLastModifiedDate() {
        return lastModifiedDate;
    }

    public void setLastModifiedDate(LocalDateTime lastModifiedDate) {
        this.lastModifiedDate = lastModifiedDate;
    }
}

サブクラス:Order

@Entity
@Table(name = "ORDERS")
public class Order extends BaseEntity{

   @Id
   @GeneratedValue() //Default strategy = auto
   @Column(name = "ORDER_ID")
   private Long id;

   @OneToOne
   @JoinColumn(name = "DELIVERY_ID")
   private Delivery delivery;

   @ManyToOne // N:1 관계; Member가 여러개의 주문을 할 수 있지만, 주문서는 하나의 Member랑만 연관 되어 있음
   @JoinColumn(name = "MEMBER_ID") // ... member m JOIN orders o ON m.MEMBER_ID = o.MEMBER_ID;
   private Member memberId; // memberId에 Member 객체 자체를 주입 함

   private LocalDateTime orderDate;

   @Enumerated(value = EnumType.STRING)
   private OrderStatus status;

   @OneToMany(mappedBy = "orderId")
   private List<OrderItem> orderItemList = new ArrayList<>();

   public Long getId() {
       return id;
   }

   public void setId(Long id) {
       this.id = id;
   }

   public Member getMemberId() {
       return memberId;
   }

   public void setMemberId(Member memberId) {
       this.memberId = memberId;
   }

   public LocalDateTime getOrderDate() {
       return orderDate;
   }

   public void setOrderDate(LocalDateTime orderDate) {
       this.orderDate = orderDate;
   }

   public OrderStatus getStatus() {
       return status;
   }

   public void setStatus(OrderStatus status) {
       this.status = status;
   }
}

親BaseEntityオブジェクトを作成し、@MappedSuperClassデモを追加します.
子クラスがextendsとして親クラス(BaseEntity)を継承すると、親クラスのカラムが子クラスに自動的に追加されます.
親クラスのテーブルは作成されません.したがって,@MappedSuperClassは継承関係マッピングとは異なる**