2009-05-08 5 views
13

Java, .NET 및 Groovy의 엔터프라이즈 응용 프로그램 개발을 연구 중입니다. 각 플랫폼마다 간단한 SOAP 웹 서비스를 구현하는 것이 얼마나 힘든지를 시도 할 것입니다. 우리는 가능한 한 정확하게 실제 세계를 연구하기 위해 가장 일반적으로 사용되는 도구와 라이브러리를 사용합니다.Java Persistence 용 JPA 또는 Hibernate?

지속성을 위해 Hibernate를 사용할 때 새로운 JPA (Java Persistence API) 또는 JPA가 등장하기 전의 Hibernate 사용자 정의 API를 사용하는 것이 현실 세계를보다 잘 반영합니까?

답변

14

이미 알고 계시 겠지만, 3.2 절에서 Hibernate는 JPA 인증을 받았습니다. Hibernate의 "커스텀"API를 사용할 필요없이 JPA 프로 바이더로서 Hibernate를 쉽게 사용할 수 있습니다.

하이버 네이트를 프로 바이더로 사용하여 스트레이트 JPA를 사용할 것을 권장합니다. XML보다는 주석을 사용하십시오 (훨씬 좋네요).

그러면 약간의 여분의 것이 필요할 때 항상 최대 절전 모드 세션을 가질 수 있습니다. 예를 들어, 컬렉션을 질의에 매개 변수 (setParameterList)로 전달하려면이 작업을 수행해야합니다. 사람이 주위에 영원히 계속 것처럼

+0

나는 알고있다. 그러나 최근 강연에서 우리는 JPA가 아직 미성숙하고 모든 고급 기능을 아직 공개하지 않았다는 것을 표명했다. –

+1

JPA는 또한 지원하는 기본 지속성 계층간에 가장 낮은 공통 분모로 작동해야 함을 명심하십시오. 그래서 만약 Hibernate가 feature A를 whizzbang하고 Toplink이 그렇지 않다면, JPA API는 그 feature를 노출시킬 수 없다. –

1

당신이

새로운 JPA 질문을 모호하게하는 방법 재미 ... 또는 평범한 구식 최대 절전 모드

는 소리, 다른 하나는 방금 출시되었습니다 . 물론 사실이 아닙니다. JPA는 Hibernate뿐만 아니라 TopLink 및 J2EE 엔티티 bean의 영향을 받았습니다. JSR 220 초안에 대한 첫 번째 언급은 2003 년부터였습니다. 새로운 것을위한 방법은 무엇입니까? JPA를 Hibernate와 함께 사용한다면 여전히 Hibernate를 사용하고 Hibernate가 가지고있는 독점적 인 확장을 자유롭게 적용 할 수 있습니다.

0
당신이 최대 절전 모드를 교체 할 경우에 대비 당신은 순수한 JPA 스펙을 고수 할 수

,하지만 당신 '... 독점 API를 사용하거나 동등한 설립 및 표준 API 사용

그래서 선택은 당신입니다 아마도 언젠가는 그것을 절대로 바꿀 수 없다는 것을 알게 될 것이고, 여러분은 정말 멋진 Hibernate 특정 기능을 놓치고있다.

나는 Damo가 제안한대로 Hibernate를 직접 사용하는 것이 좋습니다. XML 대신 주석을 사용하는 것이 좋습니다. Hibernate가 가져 오는 "마술"에 대해 확실하게 이해해야합니다. 조심하지 않으면 데이터베이스를 정말로 스릴 수 있습니다. 예를 들어, N + 1 개 쿼리 문제는 @OneToOne 조인하는 방법을 당신이에 따라 거기 :

Hibernate OneToOne automatic join fetching (resolving n+1 problem)

나는 또한 Hibernate 질의에 단위/통합 테스트를 위해 내장 데이터베이스를 사용하는 것이 좋습니다, 그리고 시계 줄 SQL을 생성하여 손으로 직접 쓰는 것처럼 보입니다.