日期:2014-05-20  浏览次数:20823 次

spring管理hibernate的问题
在spring没有配置事务管理的情况下,只配置了sessionFactory

<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
<property name="configLocation">
<value>WEB-INF/hibernate.cfg.xml</value>
</property>
</bean>

<bean id="studao" class="dao.StudentDao" singleton="false">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>

我的这个学生dao这么写事务能提交吗

public class StudentDao extends HibernateDaoSupport implements IStudentDao {

//添加学生
public void inputStu(Student student){
 
HibernateTemplate ht=this.getHibernateTemplate(); 
try {
 
 
 
ht.save(student);


} catch (Exception e) {

e.printStackTrace();}


}

还有 HibernateTemplate 和 HibernateDaoSupport
有什么好处和作用~~


------解决方案--------------------
如果你的这个dao不涉及service的话,只在本身的dao.impl中做测试
<bean id="studao" class="dao.StudentDao" singleton="false"> 
<property name="sessionFactory"> 
<ref local="sessionFactory"/> 
</property> 
</bean> 
是没问题的,因为spring内在的HibernateTemplate就含有了自动提交和打开连接数据库的能力,比如session的打开关闭等等
即这就不用自己进行提交和管理session了,应该说更方便了
------解决方案--------------------
你吧DateSource也封装成Bean。让SessionFactory依赖DateSource。不要有hibernate.cfg.xml 容易出错。
------解决方案--------------------
自己的dao有继承HibernateDaoSupport 的话
事务会提交,但是也建议你在spring配置文件中配置事务管理器

------解决方案--------------------
顶楼上那些。。。。。。。。
------解决方案--------------------
你的sessionFactory要依赖于dataSource
------解决方案--------------------
这种情况下要么使用spring的声明事务,要么手动提交事务,否则的话是会出现问题。

使用hibernateTemplate 和 daoSupport 能让你不必去关心想一些session的问题,还有就是将一些操作集成化。
------解决方案--------------------
必须先有datasSource 
然后才有sessionFactory
------解决方案--------------------
既然继承了HibernateDaoSupport,要配置事务的应该,或者你手动提交事务,这样的话,你还继承这个类干嘛呢?继承这个类,就是使用spring的声明式事务,帮你管理session的 关注!
------解决方案--------------------
你继承了HibernateSupport并且实现了HibernateTemplate
然后掉用里面的save方法就已经提交了事物的,并且这个方法应该抛出的是运行时异常
另外说一点:实现这个接口有个缺点,就是它没有进行事物的回滚。
------解决方案--------------------
如果在hibernate配置文件中添加了
<property name="connection.autocommit">true</property>
是可以提交的
------解决方案--------------------
很明显是在hibernate配置文件中配置了属性
------解决方案--------------------
hibernate.cfg.xml 应该贴出来
------解决方案--------------------
楼主可以试着在 数据库 里插入语句看一下,(主键自动增长)看 插入语句的 主键id 是否为1,如果是2,则说明你运行save方法添加成功了 但是 回滚了 所以第1条save的数据又删掉了
------解决方案--------------------
主键自动增长是不是搞错了。。换个看。。我碰到过这情况。。
------解决方案--------------------