小弟有一事不明,最近在做hibernate性能优化测试,在hibernate中引入连接池c3p0后,发现性能没有提升,反而下降了,向大虾请教原因和改进方法
测试代码: @Test
public void testHQL_01() {
long start = System.currentTimeMillis();
sf = new AnnotationConfiguration().configure().buildSessionFactory();
for (int i = 0; i < 60; i++) {
Session session = sf.openSession();
session.beginTransaction();
Query q = session.createQuery("from Category");// 注意对应的是对象名,而不是表名
List<Category> categories = (List<Category>) q.list();
for (Category c : categories) {
System.out.println(c.getName());
}
session.getTransaction().commit();
session.close();
}
long end = System.currentTimeMillis();
System.out.println("耗用时间=" + (end - start));

解决方案 »

  1.   

    把long start = System.currentTimeMillis();放在buildSessionFactory();之后再测试
    buildSessionFactory一般只会初始化时做一次,这里面可能包含了初始化连接池的步骤。
      

  2.   

    连接池在大量并发访问时才有助力于提高性能,这个提高不是无限的,与平均并发连接数有关系。还有不管什么连接池,它都是对jdbc的封装,理论上效率是不是会快于jdbc的