Spring
[SpringBoot] Entity 속성정보 상속받기
jhkimmm
2022. 4. 7. 02:47
Entity를 작성할 때 id나 생성시간, 수정시간과 같은 속성정보는 모든 Entity에 동일하게 추가되는 정보이기 때문에 코드의 중복이 발생합니다.
Entity마다 중복되는 컬럼들을 따로 모아서 상속받을 수 있는 방법을 알아보겠습니다.
먼저 중복되는 컬럼들을 가지고 있는 BaseEntity를 생성합니다.
@Getter
@MappedSuperclass
@NoArgsConstructor
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@CreatedDate
private LocalDateTime createdAt;
@LastModifiedDate
private LocalDateTime updatedAt;
}
@MappedSuperclass 어노테이션이 핵심입니다.
이 어노테이션은 해당 엔티티의 테이블을 생성하지 않고 속성정보를 상속받을 수 있게 해줍니다.
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Table(name = "user")
@Entity
public class User extends BaseEntity {
private String username;
private String password;
private String email;
private String authority;
}
위 코드처럼 생성한 BaseEntity를 상속받기만 해주면 id, createdAt, updatedAt 컬럼이 User 엔티티에 자동으로 추가되게 됩니다.