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自带连接池的实现问题,具体情况有待于以后证实。其实这个连接池在实际项目中使用的并不多,但是在开发、测试的时候有较多的使用,所以如果在测试时发现这种问题,更换连接池试试:)
本文讨论了Hibernate自带连接池存在的问题,特别是在未提交事务的情况下获取不到最新数据的情况,并提供了使用DBCP或其他连接池作为解决方案。
316

被折叠的 条评论
为什么被折叠?



