기능을 생각하면서 테이블을 구성해보니 아래 정도로 추려졌다.
위 ERD 사진으로 Entity 작성
공통이나 마스터정보에 대해 먼저 작성
BaseEntity
AuditorAware
를 통해 동일값 기입 처리@MappedSuperclass
기입 필수@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseEntity {
@CreatedBy
@Column(updatable = false)
private String createdBy;
@CreatedDate
@Column(updatable = false)
private LocalDateTime createdDate;
@LastModifiedBy
private String lastModifiedBy;
@LastModifiedDate
private LocalDateTime lastModifiedDate;
}
ENUM_TYPE
public enum Fuel {
GASOLINE, DIESEL, LPG
}
public enum Manufacture {
HYUNDAI, KIA, KGM, GENESIS, BMW, MERCEDES_BENZ, AUDI, CHEVROLET, RENAULT, VOLVO, LEXUS, HONDA, TOYOTA
}
USER_CAR
FetchType.LAZY
으로 통일default_batch_fetch_size: 100
지정Enumerated(EnumType.STRING)
으로 대참사 방지@Entity
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class UserCar extends BaseEntity {
@Id
@GeneratedValue
private Long carId;
@ManyToOne
@JoinColumn(name = "userId")
private UserInfo userInfo;
private String carNumber;
private String carModel;
@Enumerated(EnumType.STRING)
private Fuel carFuel;
@Enumerated(EnumType.STRING)
private TransMission carTransMission;
@Enumerated(EnumType.STRING)
private DriveSystem carDriveSystem;
private Long carMileage;
@OneToMany(mappedBy = "userCar", fetch = FetchType.LAZY)
private List<RepairHistory> repairHistory = new ArrayList<>();
@OneToMany(mappedBy = "userCar", fetch = FetchType.LAZY)
private List<UserPartServiceDate> userPartServiceDate = new ArrayList<>();
}
다른 Entity Class도 동일하게 만들어 줬습니다.
jpa:
hibernate:
ddl-auto: update
위 옵션을 통해 테이블 생성 확인 했습니다.