一直对jpa怀有好感,以前也是用hibernate做jpa的实现产品,运行起来也相当不错,
最近换成openjpa做jpa的实现,突发奇想的对openjpa做了一下测试,没有想到openjpa的性能那么差劲,运行时间一般是hibernate实现jpa的3-8倍,恐怖!
下面是jpa查询结果的代码 ,同样还做了一部份关于关于Hibernate-jpa和openjpa增删改的性能测试,由于代码多就不拿出来了,测试结果都证明了openjpa的性能实在令人堪忧
--openjpa--查询100条记录
控制台打印:1828
--Hibernate-jpa查询100条记录
控制台打印:469
测试结果:
1.都是从相同的数据库中相同的表中取100条记录,openjpa花费时间1828,hibernate-jpa花费时间469,
2.如果是从相同的数据库中取5条记录,openjpa花费时间1703,hibernate-jpa花费时间438,openjpa的成熟度可想而知。
最近换成openjpa做jpa的实现,突发奇想的对openjpa做了一下测试,没有想到openjpa的性能那么差劲,运行时间一般是hibernate实现jpa的3-8倍,恐怖!
下面是jpa查询结果的代码 ,同样还做了一部份关于关于Hibernate-jpa和openjpa增删改的性能测试,由于代码多就不拿出来了,测试结果都证明了openjpa的性能实在令人堪忧
--openjpa--查询100条记录
@Test
public void testFind_fetch() {
long start = System.currentTimeMillis();
DataResult<DataDictionary> qt = dataDictionaryService.getPageData(DataDictionary.class, 1, 100);
System.out.println(qt.getTotalrecord());
List<DataDictionary> listE = qt.getResultlist();
DataDictionary emp = null;
for(int i=0; i<listE.size(); i++) {
emp = listE.get(i);
// 延迟加载测试,openjpa不支持@Basic(fetch=FetchType.LAZY)
System.out.println(emp.getName());
System.out.println(emp.getTypename());
System.out.println(emp.getListorder());
}
long end = System.currentTimeMillis();
System.out.println(end-start);
}
控制台打印:1828
--Hibernate-jpa查询100条记录
@Test// 性能测试-hibernate实现jpa
public void testFind_fetch() {
long start = System.currentTimeMillis();
DataResult<DataDictionary> qt = dataDictionaryService.getPageData(DataDictionary.class, 1, 100);
System.out.println(qt.getTotalrecord());
List<DataDictionary> listE = qt.getResultlist();
DataDictionary emp = null;
for(int i=0; i<listE.size(); i++) {
emp = listE.get(i);
// 字段延迟加载测试,hibernate支持
System.out.println(emp.getName());
System.out.println(emp.getTypename());
System.out.println(emp.getListorder());
}
long end = System.currentTimeMillis();
System.out.println(end-start);
}
控制台打印:469
测试结果:
1.都是从相同的数据库中相同的表中取100条记录,openjpa花费时间1828,hibernate-jpa花费时间469,
2.如果是从相同的数据库中取5条记录,openjpa花费时间1703,hibernate-jpa花费时间438,openjpa的成熟度可想而知。