JPA 에 관련해서 여러가지 여쭙겠습니다.

137 views
Skip to first unread message

날라리어부

unread,
Apr 10, 2013, 12:20:53 AM4/10/13
to ks...@googlegroups.com


우선, 실제 현장에서 많이들 쓰시는지요 ? 
좋다고는 하는데 실제 적용했다는 얘기는 잘 안들리는군요 !

둘째, 어떤 구현체를 적용하시나요 ? ( HIbernate, Toplink, Eclipselink, OpenJPA .. )
저는 지금 Elipselink 를 적용해서 하고 있는데 다른 것들은 어떨지 궁금합니다.

셋째, 1:M 에서 M 이 추가 삭제될때 Owner(1) 에 반영이 안됩니다.
아마 캐쉬에 있는걸 그대로 가져오는것 같은데, 웹 환경에 JPA 가 좀 안맞는것이 아닌가 하는 회의가 생기기도 합니다.
그냥 Mybatis 로 해야하나 하는 회의까지 들고...

네쨋, 식사들 하셨습니까 ? ^^

Spring Data 에 반해서 열심히 적용해볼려 하는데 첩첩산중이네요 ~

이상용

unread,
Apr 10, 2013, 1:01:30 AM4/10/13
to ks...@googlegroups.com
저도 Spring Data에 반해서 열심히 삽질 중이기는 합니다만.. 많이들 사용하시는지는 모르겠네요;;

구현체로는 Hibernate를 target으로 공부하고있습니다.

flush()를 안해주신것은 아닌지...(저는 반영은 잘되던데;)

식사는 맛있게 했습니다. ^^;;


2013년 4월 10일 오후 1:20, 날라리어부 <fill...@gmail.com>님의 말:

--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 ksug+uns...@googlegroups.com에 이메일을 보내세요.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
http://groups.google.com/group/ksug?hl=ko-KR에서 그룹을 방문하세요.
더 많은 옵션을 보려면 https://groups.google.com/groups/opt_out을(를) 방문하세요.
 
 



--

YoungHan Kim

unread,
Apr 10, 2013, 2:00:32 AM4/10/13
to ks...@googlegroups.com
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, 날라리어부 님의 말:

KwonNam Son

unread,
Apr 11, 2013, 2:46:02 AM4/11/13
to ks...@googlegroups.com
저희 팀에서 잘 썼습니다.
실제 서비스 몇 개 런칭해서 잘 돌아가고 있구요. 사용자도 수십만명 수준인 서비스들입니다.

저 같은 경우 한 3년 전 쯤에는 JPA는 아니고 Hibernate 기반으로 아마도 실제로 서비스하는 사이트로는 우리나라 최대 레퍼런스 작업을 했었다고 추측합니다.
(지금은 ORM 사용처가 늘어난데다 그 싸이트 사용자가 줄어들어서 최대는 아닐 듯..)

네이버 N샵도 JPA라고 들었구요.(정확하진 않음)
아무튼 우리나라에서도 Java ORM(저 같은 경우는 Hibernate/JPA만 거의 7년째) 레퍼런스 상당히 있고 실전에 도입돼서 잘 돌아가고 있다고 말씀드리고 싶습니다.

저는 Hibernate 기반으로만 써봐서 다른 JPA 구현체를 추천할 처지는 아닌 것 같습니다.


2013년 4월 10일 오후 3:00, YoungHan Kim <zip...@gmail.com>님의 말:

--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 ksug+uns...@googlegroups.com에 이메일을 보내세요.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
http://groups.google.com/group/ksug?hl=ko-KR에서 그룹을 방문하세요.
더 많은 옵션을 보려면 https://groups.google.com/groups/opt_out을(를) 방문하세요.
 
 



--
* 까먹지말자! http://kwon37xi.egloos.com

황용대

unread,
Apr 11, 2013, 2:50:40 AM4/11/13
to ks...@googlegroups.com
이클립스링크를 쓰다가 하이버네이트로 넘어간 경우입다

이클립스링크의 역사가 오래지 않아 그런지
기본적인 기능들은 잘 돌아가는데 좀만 깊이 들어가자면 자료가 너무 없습니다.
한글 자료는 당연히 없고 영어 문서 또한
많이 부족합니다

그리고 캐쉬 지원 같은 써드파티가 부족합니다. 하이버네이트는 ehcache 나 jboss 캐쉬 같이 여러 제품이 있지만 이클립스링크는 이클립스링크의 전신인 오라클의 탑링크 밖에 없네요

2013년 4월 11일 목요일에 KwonNam Son님이 작성:


--
http://about.me/stadia
Reply all
Reply to author
Forward
0 new messages