확장 가능한 enum을 만들어야 한다면 인터페이스를 이용하라

enum 자료형은 형 안전 enum 패턴보다 거의 모든 면에서 월등하다. 그러나 형 안전 enum 패턴은 계승을 통한 확장이 가능했단 반면 enum 자료형은 그 렇지 않다. 다시 말해서 형 안전 enum 패턴을 쓸 경우에는 다른 열거 자료형을 계승해서 새로운 열거 자료형을 만드는 것이 가능하지만 enum 자료형으로는 그럴 수 없다는 이야기다. 그러나 이것을 단점이라 볼 수 는 없는데 enum 자료형을 계승한다는 것을 대체로 바람직하지 않기 때문. 확장된 자료형의 상수들이 기본 자료형의 상수가.. Read More

JPA 고급매핑 (4)

JPA 고급매핑의 마지막 시간이다. 조인 테이블 데이터베이스 테이블의 연관관계를 설계하는 방법은 크게 2가지이다. 1. 조인 컬럼 사용 2. 조인 테이블 사용 조인 컬럼 사용 테이블 간에 관계는 주로 조인 컬럼이라 부르는 외래 키 컬럼을 사용해서 관리한다. 예를 들어 회원과 사물함이 있는데 각각 테이블에 데이터를 등록했다가 회원이 원할 때 사물함을 선택할 수 있다고 가정해보자. 회원이 사물함을 사용하기 전까지는 아직 둘 사이에 관계가 없으므로 Member 테이블의 외래 키에 null을 입력해두어야 한다. 이렇게.. Read More

JPA 고급매핑 (3)

복합키 식별 관계 매핑 부모, 자식, 손자까지 계속 기본 키를 전달하는 식별관계가 있다고 치자 식별 관계에서 자식 테이블은 부모 테이블의 기본 키를 포함해서 복합 키를 구성해야 하므로 @IdClass 나 @EmbeddedId를 사용해서 식별자를 매핑해야 한다. (일대일 관계랑은 약간 다르다.) @IdClass @Entity @Data public class Parent { @Id @Column(name = “PARENT_ID”) private String id; private String name; } @Entity @Data @IdClass(ChildId.class) public class Child { @Id @ManyToOne @JoinColumn(name = “PARENT_ID”) private Parent.. Read More