-JPA가 어려운 근본적인 이유는 ORM이 객체지향과 관계형 데이터베이스 둘 다 잘 알아야 하기 때문이다.


-다 쪽인 @ManyToOne은 항상 연관관계의 주인이 되므로 mappedBy를 설정할 수 없다.


-일대다 단방향 매핑보다는 다대일 양방향 매핑을 사용하자


-자식 테이블은 식별 관계(기본키+외래키) 보다는 비식별관계(단순이 외래키로)를 추천


-기본 로딩 전략

@ManyToOne, @OneToOne : 즉시로딩(FetchType.EAGER)

@OneToMany, @ManyToMany: 지연로딩(FetchType.LAZY)

추천 방법은 모든 연관관계에 지연 로딩을 사용하고, 상황을 보고 꼭 필요한 곳에만 즉시 로딩을 사용하는 것


-값 복사 문제

Address a = new Address("Old");

Address b = a.clone(); //항상 복사해서 넘겨야 한다.

//Address b = a; //이렇게 참조만 넘기면 부작용이 발생할 수 있다.

b.setCity("New");

근본적 해결책 : setter 메소드를 가급적 쓰지마라


-자주 나오는 익셉션 에러:

*failed to lazily initialize a collection of role no session

=트랜젝션을 적용해라

*stackoverflowError

=양방향 매핑이 되어있는 경우 Value Object 전체를 println으로 읽지 마라

Posted by 타다키치
,