前几天在项目中遇到问题:在页面提交数据时,有错误提示:Could not toggle autocommit,org.hibernate.SessionException: Session is close。
项目的结构是Spring + Hibernate。
下面谈谈我处理问题的过程:
方案1
在网上搜到一个哥们说是要改配置文件:
把hibernate.cfg.xml的connection.autocommit=true去掉....
我查看了配置文件,并没有此项设置。此方案不符合我的情况。
方案2
在网上找到Robbin写的一篇关于Hibernate 中剖析Transaction的文章
url:http://www.javaeye.com/topic/264#806
看了以后很有收获,了解到了Hibernate底层代码。
方案3
没有办法,重新又仔细检查了我的代码。发现有一处在:
openSession()之后紧接着closeSession(),这应该是写代码的手误,太粗心造成的!
修改之后问题没有复现。
反思:
1 细心很重要,俗话说细节决定成败
2 像Hibernate,spring 这类开源框架,在应用中应该要有意识的查看源代码的实现,了解底层