Spring4+Hibernate4事务小记

18 篇文章 1 订阅

学习Spring+Hibernate,非常强大的框架,为了追新,就直接从最高版本开始学习了,这要冒很大的风险,因为网上可查到的资料大多是针对旧版本的,比如Spring3,Hibernate3。

根据我的测试,记录如下:

1.Spring4事务必须针对接口,否则报错。(之前可以不针对接口?)如果没有事务,则bean普通类也可以注入。

2.事务可以放在接口上,也可以放在实现上。

3.注意应用程序空间必须统一,否则事务失败。

4.Bean最好都交给Spring来管理,如果不是,则如果出现事务控制,可能因不同的应用空间而造成事务失败。

5.事务连接可以使用DataSourceTransactionManager,使用HibernateTransactionManager也可以。

复制代码
<!-- 
    <bean id="transactionManager"   
            class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />  
    </bean>  
     -->

    <bean id="transactionManager"   
            class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />  
    </bean>  
复制代码

 6.如果使用了JdbcTemplate和Hibernate,则应使用HibernateTransactionManager,如果使用DataSourceTransactionManager,则会提示没有活动Session错误。

(这个可能是我配置的有问题?)

7.如果使用事务,则调用时一定要使用接口,否则就会报告错误。

BillOperbaseBill=(BillOper)ctx.getBean("saleBill");

BillOper为第一没接口。

8.如果在程序中像这样使用:

sessionFactory.getCurrentSession().save(T);

如果不开启事务,则会报告

No Session found for current thread

错误。

9.Spring4+Hibernate4中不再支持HibernaterTemplate,只能使用原生的session接口来操作。

10.如果报告错误:hibernate:Cannot use identity column key generation with <union-subclass> mapping for ..... 

使用hibernate union-subclass 元素进行继承映射时会抛出此异常:Cannot use identity column key generation with <union-subclass> mapping for.............

原因是使用unnion-subclass 元素时 父类的标识属性生成器不能使用“indentity(native)”  可以选择"hilo”,"increment”等。

11.如果使用Spring+Hibernate,有时Hibernate的配置文件错误不容易发现(至少我没有找到好办法),可以直接使用Hibernate来调试。

12.有时在测试框架(junit)中无法显示Spring配置文件错误,可以在单独的程序单元中进行测试。

13.在需要用异常来控制事务的地方,不要捕获这个异常,或者再次抛出一个异常!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值