jpa:
hibernate:
ddl-auto: create
Hibernate의 ddl-auto: create
을 통해 스키마를 자동으로 생성하도록 설정했다.
Member 엔티티 객체의 필드는 다음과 같다.
private Long memberId;
private String email;
private String name;
private String phone;
private MemberStatus memberStatus;
private LocalDateTime createdAt;
private LocalDateTime modifiedAt;
하지만 생성된 테이블의 속성을 보면 다음과 같다.
즉 테이블 Column의 순서가 엔티티 클래스의 필드와 다르다.
이는 Hibernate가 데이터베이스에 테이블을 생성할 때 컬럼들을 알파벳 순(PK는 앞쪽에 생성)으로 생성하기 때문이다.
그림을 보면, MEMBER_ID는 기본키이기 때문에 가장 앞쪽에 생성되었다.
하지만 CREATED_AT
이나 LAST_MODIFIED_AT
은 왜 알파벳 순서가 아닐까?라는 생각이 들었다.
이는 Member 엔티티가 Auditable 클래스를 상속받아서 사용했기 때문인 것 같다.
// Member
public class Member extends Auditable
// Auditable
public abstract class Auditable {
@CreatedDate
@Column(name = "created_at", updatable = false)
private LocalDateTime createdAt;
@LastModifiedDate
@Column(name = "LAST_MODIFIED_AT")
private LocalDateTime modifiedAt;
}
[참고]
https://stackoverflow.com/questions/1298322/wrong-ordering-in-generated-table-in-jpa