我的一段hibernate代码
VioFineDAO fineDao = new VioFineDAO();
while((temp=reader.readLine())!=null){ //Thread.sleep(10);
String jdsbh = temp.split("[|]")[2].trim();
if(!jdsbhs.contains(jdsbh)){
VioFine fine = fineDao.findById(SecretUtil.getDESEncString(jdsbh));
if(null!=fine){
VioFine realFine = SecretUtil.DesVioFine(fine);
}
.
.
.
这段代码就是一直到数据库查数据,我看数据库的session有的时候是到达一个数目后就稳定了,有的时候一直增加。
如果把上面的Thread.sleep(10)取消注释,就正常。这是什么原因啊。getSession方法是正常的没有问题的。一个线程就一个hibernate的session
VioFineDAO fineDao = new VioFineDAO();
while((temp=reader.readLine())!=null){ //Thread.sleep(10);
String jdsbh = temp.split("[|]")[2].trim();
if(!jdsbhs.contains(jdsbh)){
VioFine fine = fineDao.findById(SecretUtil.getDESEncString(jdsbh));
if(null!=fine){
VioFine realFine = SecretUtil.DesVioFine(fine);
}
.
.
.
这段代码就是一直到数据库查数据,我看数据库的session有的时候是到达一个数目后就稳定了,有的时候一直增加。
如果把上面的Thread.sleep(10)取消注释,就正常。这是什么原因啊。getSession方法是正常的没有问题的。一个线程就一个hibernate的session
当判断一个session正在忙碌时,会启用新的session在做你的新的事务》
如此,当线程池里面session达到一定数量后,就不会在生成,而是等待其他session使用用完后回归到线程池后在取一个空闲session做事务。
hibernate会根据情况给你新开会话或者给你一个空闲会话