Hibernate+Spring:getHibernateTemplate与当前线程及事务提交问题

Hibernate+Spring:getHibernateTemplate().getSessionFactory().getCurrentSession().begin... Hibernate+Spring:

getHibernateTemplate().getSessionFactory().getCurrentSession().beginTransaction().commit()难题!
-----------------------------------
有HibernateDAO extends HibernateDaoSupport implements myDAOInterface**
其内的方法:
public void save(Object object) {
getHibernateTemplate().save(object);
}

进行添加操作的时候,能够从控制台看到SHOWSQL信息,但是数据库当中没有数据插入(我猜测是其事务没有进行提交)

于是利用以下各式进行提交:
1.getHibernateTemplate().getSessionFactory().openSession().beginTransaction().commit()
2.getHibernateTemplate().getSessionFactory().openSession().getTransaction().commit()
3.getHibernateTemplate().getSessionFactory().getCurrentSession().getTransaction().commit()
4.getHibernateTemplate().getSessionFactory().getCurrentSession().beginTransaction().commit()
其中只有4能够正常执行,并且插入数据。其它三个都发出不同异常,有的是没有事务等,有的是没有绑定SESSION的。

补充:
a.在hibernate.cfg.xml当中,已经设置了
<property name="current_session_class_name">thread</property>
(大概是以上式子,我现在在网吧,没有用自己电脑,不知道记错没?)

其中在1,2形式的错误当中,出现no session 绑 to thread

b.在applicationContext.xml当中,配置了事务管理(即仅仅配置了<bean id="transactionManager" ...>.....</bean>

疑问:
getHibernateTemplate()如果才能得到当前被ThreadLocal绑定的Session,即,除了通过getHibernateTemplate().getSessionFactory().getCurrentSession().beginTransaction().commit()来让事务提交,还有没有其它办法,让它完成提交任务???
-----------------------------
以上的疑问来自于代码的修改过程中发出的,先前的SAVE方法是:
利用<property name="current_session_class_name">thread</property>
设置之后
public class HibernateDAO {
public void save(Object o) {
HibernateUitl.打开currrentSESSION
SESSION开启事务。。。
主要操作....
事务提交。。。。
currentSESSION关闭
}
}
再之后,配置transactionManager这之后的代码,主变成了getHibernateTemplate()相关的操作,而不是getCurrentSession()的操作:
public class HibernateDAO {
public void save(Object o) {
getHibernateTemplate()完成 主要操作....
}
}
变成这样之后,但难以对事务进行提交(最上边的方法4是可以)
请问:getHibernateTemplate()来操作时,什么时候会开启Session,什么方法能够得到currentSession?????
展开
 我来答
百度网友f012d49
2009-01-31 · TA获得超过353个赞
知道小有建树答主
回答量:369
采纳率:0%
帮助的人:407万
展开全部
没有正确配置spring的事务啊……你在action类那里调用dao类的方式,或者说写的代码明显有问题!……你不会spring那里没有配置bean,还有方法也不会没有在spring里管理吧?总之不复杂但是比较繁琐的一些工作估计你都没做……………………
hl20913538
2009-01-31 · TA获得超过766个赞
知道小有建树答主
回答量:471
采纳率:0%
帮助的人:0
展开全部
事务一般是这么搞的。
Session session = sessions.openSession();
Transaction tx = session.beginTransaction();
session.save(user);
tx.commit();
session.close();
sessions是SessionFactory
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式