2010-04-01 4 views
5

저는 Java Persistence API을 처음 사용합니다. 방금 배웠고 Java Desktop Application에서 사용하고 싶습니다. 하지만 다음과 같은 질문이 있습니다.Java Persistence API

Q1. 어떤 JPA 구현이 크기가 가장 작습니까? (응용 프로그램의 크기를 가능한 작게하고 싶습니까?)

2. persistence.xml 파일에서 <provider> 태그의 값을 찾는 방법. 그 값은 공급 업체마다 다르지만 here에서 다운로드 한 JPA 구현의 값을 찾을 수 없습니다.

+2

흥미로운 질문 (Q1). –

+1

참조되는 것은 JPA의 * 구현 *이 아닙니다. 이것은 단순히 JPA API jar (인터페이스)이며 모든 구현에서 필요합니다. – DataNucleus

답변

5

Q1. 어떤 JPA 구현이 크기가 가장 작습니까? (응용 프로그램의 크기를 가능한 작게하고 싶습니까?)

  • Hibernate 엔티티 관리자 3.4.0.GA : JPA 1.0

~ 4.9MB

  • 는 EclipseLink 1.1.3 : ~ 4.7MB
  • 는 OpenJPA 1.2.2 : ~ 2.7MB (이것에 대해서는 잘 모르겠다. 지금은 테스트하지 않았기 때문에 일부 병이 없을 수도있다.)
  • 나는 TopLink Essentials에서 멀어 질 것이다. JPA 2.0의

    :

    • DataNucleus 2.0.3 : ~ 3.7MB
    • 는 EclipseLink 1.2 및 2.0 ~ 4.8MB
    • Hibernate 엔티티 관리자 3.5.0 - 최종 : ~ 5.8MB
    • 는 OpenJPA 2.0.0-베타 3 : (아직 베타) 측정되지 (JDBC 드라이버를 제외한 종속 포함) 이러한 조치는 내 애완 동물 프로젝트를 수행 한

    . 개인적으로, 데스크톱 앱의 경우에도 크기에 대한 선택 만하지는 않습니다.

    질문 2. persistence.xml 파일에서 태그의 값을 찾는 방법.

    • DataNucleus : org.datanucleus.jpa.PersistenceProviderImpl
    • 는 EclipseLink : org.eclipse.persistence.jpa.PersistenceProvider
    • 최대 절전 모드 : org.hibernate.ejb.HibernatePersistence
    • 는 OpenJPA : org.apache.openjpa.persistence.PersistenceProviderImpl
    • TopLink Essentials를 : oracle.toplink.essentials.PersistenceProvider
    +0

    좋아요 ... 어떤 구현을 크기에 관계없이 선택하겠습니까? –

    +0

    TopLink Essentials와 관련해 보았습니다. 왜 그렇게 멀리 떨어져 있니? –

    +0

    @ Yatendra 왜냐하면 나는 항상 고통 스럽다 (5 개의 엔티티로는 아프지 않을 수도 있음)를 발견했기 때문에, 당신이 javaagent를 사용해야하기 때문에, Toplink Essentials (그것은 유지되었지만 죽었습니다) . 그러나 그것은 효과적이다. –

    2

    Q1. 매우 대략적으로 계산 :

    • deps와 함께 최대 절전 모드 (버전 주위 3.4.0.GA)는 ca입니다. 3.6 Mb.
    • TopLink Essentials (2.0.1-04) ca. 2.4 Mb.
    • EclipseLink (예 : TopLink) (1.1.3-M1) ca. 4.7 Mb.

    질문 2. JAR 파일을 열고 META-INF/services/javax.persistence.spi.PersistenceProvider 파일을 확인하십시오.

    +0

    내 질문에 링크를 제공 한 JPA imlementation (glassfish-persistence-api-b32g)은 50KB 크기입니다. 그러나'META-INF' 폴더에는'service' 폴더가 없습니다. –

    +0

    구현이 아닌 API입니다. 제가 아는 한, GlassFish는 RI로 EclipseLink를 사용합니다. – lexicore

    +0

    @BalusC 'glassfish-persistence-api-b32g' JPA 구현에 댓글을 남기고 싶습니다. 나는 그것의 가장 작은 크기 (50KB) 때문에 그것에 끌렸다. –

    0

    메모리의 크기를 의미합니까? 또는 항아리의 크기? 메모리의 크기는 유지되는 클래스 수, 메타 데이터, EntityManager가 열리는 수, L1/L2 캐시의 수에 따라 다릅니다. 나는 DataNucleus가 Hibernate보다 적은 메모리를 사용한다는 것을 알고있다.

    항아리의 크기는 아무 것도 사용하지 않을 수도 있기 때문에 무의미한 척도입니다.

    추신. DataNucleus는 JPA1 + 2 구현입니다.