보통 처음에는 테이블과 Entity를 똑같이 설계한다. 이렇게 됐을 때의 문제점이 무엇일지 살펴보자.
@Entity// 인덱스나 length 같은 칼럼 제약 조건은 매핑 애너테이션을 이용해// 코드에 표시해주는게 좋다. DB를 까보지 않고도 알 수 있기 때문이다.// 예를 들어 JPQL 짤 때 인덱스가 필요하면 코드만 보고 사용할 수 있다.publicclassMember { @Id @GeneratedValue(strategy =GenerationType.AUTO) @Column(name ="member_id")privateLong id;privateString name;privateString city;privateString street;privateString zipcode;}
@Entity// DB에 order가 예약어로 걸려있어서 테이블명을 따로 지정해준다.@Table(name ="ORDERS")publicclassOrder { @Id @GeneratedValue @Column(name ="order_id")privateLong id;// 누가 주문했는지 알기 위한 용도 @Column(name ="member_id")privateLong memberId;privateLocalDateTime orderDate;// enum은 꼭 STRING으로 해준다. @Enumerated(EnumType.STRING)privateOrderStatus status;}