양방향 연관관계에서는 연관관계의 주인
양방향 연관관계에서는 연관관계의 주인을 정해야한다. 일대다 관계에서는 다에 무조건 외래 키가 존재하게된다.
테이블, 컬럼명
테이블명과 컬럼명은 보통 대문자 + _ 또는 소문자 + _ 을 사용한다.
@Embeddable, @Embedded
Entity에서 어떤 정보를 표현할 때, 연관되어있는 프로퍼티들을 클래스로 분리하여 관리할 수 있다. 분리한 클래스는 @Embeddable 어노테이션을 클래스 레벨에, Entity에는 @Embedded를 필드에 지정해주므로써 구현한다.
@Entity 에 @Setter 대신에 비지니스 메소드를 만들어서 사용할 것
로직이 복잡해지고 세터를 통해 데이터를 변경하는 것을 여러 곳에서 하다보면 문제가 발생했을 때 추적이 매우 힘들어진다. 데이터의 수정이 필요한 곳이 있으면 거기에 맞는 메소드를 구현하여 사용하는게 좋다.
엔티티의 컬렉션은 필드에서 초기화
다른 필드들과 다르게 컬렉션만 초기화를 필드에서 해준다. NPE를 막을 뿐만 아니라 하이버네이트가 데이터가 변경될 때 감지할 수 있는 컬렉션으로 변경한다. 하지만 개발자가 임의로 초기화를 하게되면 하이버네이트가 관리하지 못하는 컬렉션이 되므로 정상 동작하지 않을 수 있다.
https://www.inflearn.com/questions/258175
필드에 있는 컬렉션을 초기화 시키는 이유가 뭔가요? - 인프런 | 질문 & 답변
List<Order> orders = new ArrayList<>(); 이렇게 컬렉션만 초기화 해주는 이유가 궁금합니다. 단순히 NPE 방지를 위해서인가요? 그렇다면 왜 래퍼 클래스는 초기화 하지 않나요? - 질문 & 답변 | 인프런...
www.inflearn.com
'TIL' 카테고리의 다른 글
[TIL 2022-2-8] HTTP 헤더 공부 (0) | 2022.02.08 |
---|---|
[TIL 2022-2-7]JPA 공부 실용편1 끝!! (0) | 2022.02.08 |
[TIL 2022-2-4] Spring JPA 공부 시작!! (0) | 2022.02.05 |
[TIL 2022-2-2] 로그인 페이지 뷰 구현 + 생성자에 따른 @ModelAttribute의 동작 방법 (0) | 2022.02.02 |
[TIL 2022-2-1] Spring MVC 공부 (0) | 2022.02.02 |