2011년 5월 23일 월요일

JPA implementations comparison : Hibernate, Tomlink Essentials, Openjpa, Ecliselink

원문 : http://terrazadearavaca.blogspot.com/2008/12/jpa-implementations-comparison.html

Summary
본 문서에서는 Java Persistence API(JPA) 구현체인 가장 잘 알려진 4가지 컴포넌트 Hibernate, Toplink Essentials, OpenJPA, EclipseLink 간의 성능 차이에 대해 알아본다.
테스트는 방식은 JPA을 통해 MySQL 데이터베이스에 Data를 입력 하는 것인다. 4가지 JPA 구현체는 동일 한 코드을 사용하였고 단지 persistence.xml만 해당 구현체에 맞게 수정하였다. 테스트 동안 JVM의 리소스 사용량을 모니터링 하였고 Query가 입력되는 수를 Count하였다.

Descrption of hardware and software
  • Pentium Core 2 Duo T5250 Processor
  • 2 GB RAM DDR2
  • Ubuntu 8.10
  • MySQL database 5.0
  • Java Virtual Machine 1.6
  • Driver jdbc for MySQL 5.1
  • Eclipse Ganymede
  • JConsole for Reources Monitoring

Versions of the JPA implementations
  • Hibernate EntityManager and Annotations 3.4.0
  • Toplink Essentials version 2 Build 41
  • OpenJPA 1.2.0
  • EclipseLink 1.0.2

Result
Queries+Inserts 실행 건수
Queries
실행 건수
Inserts
실행 건수
Test 중 최대 점유 메모리
Test 이후 점유 메모리
OpenJAP
3928
3530
398
96
61
Hibernate
12687
3080
9607
130
79
TopLink
5720
3740
1980
55
25
EclipseLink
5874
3735
2139
57
25



테스트 시간은 JPA 구현체마다 동일하게 30분 실행
각 항목별로 최대 성능은 검은색으로 최저 성능은 붉은 색으로 표시하였다.
OpenJPA monitoring data
Hibernate monitoring data

Toplink Essentials monitoring data
Eclipselink monitoring data

Conclusions
  • JPA 구현체 중 최고성능을 가지는 제품을 명확하게 구별할수는 없었다. 일부는 CPU나 메모리 사용부분에서 뛰어나고 일부는 Insert나 Query 수행에 뛰어나다.
  • Hibernate같은 경우는 Insert 실행이 Eclipselink에 비해 4배, OpenJPA에 비해 24배이상 높았다. 하지만 Hibernate은 가장 많은 메모리을 사용함을 알 수 있었다.
  • CPU 사용율, 메모리 사용량을 기준으로 볼경우 Toplink, Eclipselnk가 최고성늘을 기록하고 있다.
  • 각 JPA 제품의 성능은 persistence.xml 일부를 최적화 한다거나 테스트 코드를 변경함으로써 테스트 결과가 다르게 나올수 있다.

댓글 없음:

댓글 쓰기

블록체인 개요 및 오픈소스 동향

블록체인(block chain) 블록체인은 공공 거래장부이며 가상 화폐로 거래할때 발생할때 발생할 수 있는 해킹을 막는 기술. 분산 데이터베이스의 한 형태로, 지속적으로 성장하는 데이터 기록 리스트로서 분산 노드의 운영자에 의한 임의 조작이 불가...