엔티티 클래스 개발시 고려사항
1. @Getter, @Setter
- 이론적으로는 Setter는 닫아두는 것을 권장
- 데이터가 어디서 변경되었는지 추적하기가 힘들어지기 때문
- 변경 지점이 명확해지도록 비즈니스 메소드를 별도로 제공(유지보수 고려)
2. 엔티티의 식별자
- 엔티티의 식별자는 "id"를 사용하고, PK컬럼명은 "member_id"로 사용
3. @ManyToMany 사용 지양
- 실무에서는 일대다, 다대일 맵핑으로 풀어서 사용
4. Enum
- @Enumerated(EnumType.STRING)
- 향후 변경 가능성을 고려해서 꼭 STRING 타입 사용 권장
5. 값타입은 불변객체
- @Setter는 제거
- 생성자에서 값을 모두 초기화해서 변경 불가능한 클래스 생성
- JPA 스펙상 엔티티, 임베디드 타입은 자바 기본 생성자를 public 또는 protected로 설정
Q. hibernate의 테이블 create 쿼리를 DDL로 바로 사용해도 될까?