Hibernate自带的连接池有比较严重的问题,如果没有使用事务,或者使用了事务但是没有提交(回滚),那么它会经常得不到新增加的数据,建议使用DBCP或其它的连接池.
例如,下面的代码,如果在新增加了数据或修改后,它不会马上得到新的数据,惟一的方法就是把注释去掉,在多数据情况下它会得到新的数据。
HibernateBase hb = new HibernateBase();
try {
//hb.begin();
List list = hb.listQuery("select company from Company company",null);
Iterator ir = list.iterator();
while(ir.hasNext()){
Company c = (Company)ir.next();
System.out.println("compnay name:"+c.getName());
}
//hb.commit();或//hb.rollback();
}
catch (PersistentException e) {
e.printStackTrace();
throw e;
}
finally{
hb.release();
}
这个问题可能是由于Hibernate自带连接池的实现问题,具体情况有待于以后证实。其实这个连接池在实际项目中使用的并不多,但是在开发、测试的时候有较多的使用,所以如果在测试时发现这种问题,更换连接池试试:)