[JPA]@MappedSuperclassは、共通エンティティで継承(Created At、Modified Atなどの共通テーブル・グリッド)


🙆‍♂️ import 🙇‍♂️
Java ORM標準JPAプログラミング
各テーブルに共通Columnがある場合、例えばCREATED_TIMEMODIFIED_TIME.
この場合、@MappedSuperclassで共同Entityを宣言し、管理を継承することができる.
次のコードは分かりやすく使用できます.
@MappedSuperclass
public class CommonEntity {
    
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "CREATED_DATE")
    private Date createdDate;
    
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "MODIFIED_DATE")
    private Date modifiedDate;
}

@Table(name = "TB_USER")
@Entity
public class User extends CommonEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="U_ID")
    private long id;
    
    @Column(name="ID")
    private String userId;

    @Column(name="NICK_NAME")
    private String nickName;

    @Builder
    public User(long id, String nickName) {
        this.id = id;
        this.nickName = nickName;
    }
}
Columnのセットが2つ以上のTableで使用されている場合、
1つずつ追加しないで、上の@MappedSuperclassを使用します.