在spring中,使用事务和不用事务的区别
各位高手大家好,我最近在学习Spring,自己也作了几个例子。但我在开发的过程中发现我使用事务和不使用事务效果都一样,我想问一下两者的区别,谢谢大家:第一种,不使用事务,...
各位高手大家好,我最近在学习Spring,自己也作了几个例子。但我在开发的过程中发现我使用事务和不使用事务效果都一样,我想问一下两者的区别,谢谢大家:
第一种,不使用事务,Spring的配置如下:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml">
</property>
</bean>
<bean id="userDAO" class="com.sshtest.dao.UserDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
然后我在DAO里直接getHibernateTemplate().saveOrUpdate(transientInstance);和getHibernateTemplate().delete(transientInstance);等就可以直接对数据库操作,也不用配置事务。
第二种,在Spring中配置事务:
就是配置
<bean id="transactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="baseTxProxy" lazy-init="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
//等事务配置……
</bean>
然后配置service:
<bean id="databaseService" parent="baseTxProxy">
……
</bean>
我想问一下,我做了这两个测试程序,做达到的效果都一样,所以我很迷惑。不用spring配置事务一样也可以操作,那为什么还要进行声明式事务管理呢?直接用spring getHibernateTemplate()做操作不可以么?
可能我对spring 事务还不太了解,望高手们解答,谢谢大家了~:) 展开
第一种,不使用事务,Spring的配置如下:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml">
</property>
</bean>
<bean id="userDAO" class="com.sshtest.dao.UserDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
然后我在DAO里直接getHibernateTemplate().saveOrUpdate(transientInstance);和getHibernateTemplate().delete(transientInstance);等就可以直接对数据库操作,也不用配置事务。
第二种,在Spring中配置事务:
就是配置
<bean id="transactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="baseTxProxy" lazy-init="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
//等事务配置……
</bean>
然后配置service:
<bean id="databaseService" parent="baseTxProxy">
……
</bean>
我想问一下,我做了这两个测试程序,做达到的效果都一样,所以我很迷惑。不用spring配置事务一样也可以操作,那为什么还要进行声明式事务管理呢?直接用spring getHibernateTemplate()做操作不可以么?
可能我对spring 事务还不太了解,望高手们解答,谢谢大家了~:) 展开
2个回答
展开全部
不使用事务时,每次调用hibernateTemplate的方法会立刻进行事务提交.
而使用事务后,会在你配置的类的方法执行完成后再进行事务提交,如果一个方法中同时进行了多次的插入、修改或删除操作,会统一的进行提交或回滚,这样可以保证数据操作会同时成功或失败,保证数据的完整性.
而使用事务后,会在你配置的类的方法执行完成后再进行事务提交,如果一个方法中同时进行了多次的插入、修改或删除操作,会统一的进行提交或回滚,这样可以保证数据操作会同时成功或失败,保证数据的完整性.
参考资料: http://bbs.mldn.cn
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |