-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으로 읽지 마라
'코딩 > Spring' 카테고리의 다른 글
Spring에서 form 바인딩 시 empty string 문제 (0) | 2016.07.06 |
---|---|
Hibernate 2 - 일대다 OneToMany, 다대일 ManyToOne 양방향 매핑 Mapping 실습 (0) | 2015.12.22 |
Hibernate 1 - 스프링 Spring data jpa로 하이버네이트 Hibernate 적용하기 (0) | 2015.12.15 |
Spring Properties를 동적으로 불러오는 방법(PropertiesConfiguration) (0) | 2015.12.07 |
EhCache 안에 Key 모두 확인하는 법 (0) | 2015.12.07 |