1. 현장에서 사용
- 저희팀에서는 사용합니다. ( 제가 아는 분들도 사용 하고 D포탈에서도 ORM을 사용하는 팀들이 있었습니다.)
2. 구현체
- Hibernate를 추천합니다.
(한가지 이유는 레퍼런스가 많습니다.)
3. 1:M 에서 M 이 추가 삭제될 때 Owner에 반영이 안되는 문제
- 이것은 코드를 봐야 할 것 같습니다만... 연관관계 설정을 반대쪽만 하신 것 같습니다.
구채적인 것을 말씀드리기 전에 몇가지 정리를 하겠습니다.
먼저 owner라는 용어가 JPA에는 명확하게 정의되어 있습니다.
(JPA에서 연관관계를 설정 할 때 중요한 것이 owner라는 단어입니다.)
owner는 일반적으로 누가 DB FK를 가지고 관리하냐 입니다.(꼭 그런 것은 아니지만 대부분 그렇습니다.)
owner의 반대쪽은 inverse라고 합니다.(or non owner,mappedBy를 직접 쓰는 곳 등등...)
1:M 인 경우
1 = inverse
M = owner
입니다.!
owner(여기선 M)에 연관관계를 설정해 주어야 연관관계가 멥핑됩니다.
inverse(1)에 연관관계를 설정하면 연관이 처리되지 않습니다.
추측해 볼 때 owner에 연관관계를 설정한 것이 아니라 inverse에 관계를 설정 하신 것 같습니다.
(owner반대쪽, 일반적으로 mappedBy를 적어 준 곳)
양방향 연관 관계인 경우 양쪽에 연관관계를 다 설정 해 주는 것이 가장 좋습니다.
그리고 한가지더!
만약 Test Case를 만드시거나 하면 1차 케쉬 라고 부르는 것 때문에
원하는 대로 잘 안되걸 거에요
em.clear()를 호출해 주시면 케쉬문제 없이 확인 해 볼 수 있습니다.
@PersistenceContext
EntitryManager em;
{
Test데이터 저장... 저장 .. 저장
em.clear();
데이터 로딩
..}
4. 식사
- 넵! 뽈록 하게 먹었습니다. ㅋㅋ
etc. Spring Data JPA를 잘 하기 위해선 ORM을 잘 알아야 합니다.
(Spring Data JPA는 ORM을 지원해주기 위한 도구일 뿐입니다.)
ORM은 사실... 공부할 것이 많아요 ㅋㅋ
하지만 꼭! 잘 배워서 인간 sql멥퍼에서 탈출 하시길 바랍니다.
2013년 4월 10일 수요일 오후 1시 20분 53초 UTC+9, 날라리어부 님의 말: