关于Spring事物处理机制!
看了马士兵关于Spring的视频,关于事物处理机制的那段里,出现RuntimeException后,在控制台里已经看见hibernate发出了2条insert语句,为什么...
看了马士兵关于Spring的视频,关于事物处理机制的那段里,出现RuntimeException后,在控制台里已经看见hibernate发出了2条insert语句,为什么数据还是没插入呢?
如果insert语句回滚 ,为什么sequence还是增加了(我用的ORACLE数据库,sequence是实现id自动增加),回滚是依赖于数据库语句还是其他什么吗? 展开
如果insert语句回滚 ,为什么sequence还是增加了(我用的ORACLE数据库,sequence是实现id自动增加),回滚是依赖于数据库语句还是其他什么吗? 展开
6个回答
展开全部
你这个问题也困扰我好久,后来我网上找了下,稍微有点明白怎么回事。我先就事论事说下你这个问题的解决方法。
spring的文档中这么写的:Spring AOP部分使用JDK动态代理或者CGLIB来为目标对象创建代理,如果被代理的目标对象实现了至少一个接口,则会使用JDK动态代理。所有该目标类型实现的接口都将被代理。若该目标对象没有实现任何接口,则创建一个CGLIB代理。
从你说的情况来看,你的StudentDAO肯定实现了IStudentDAO这个接口,并且beanNameAutoProxyCreator的proxyTargetClass这个属性设置为false或者没有设置这个属性,你可以修改下StudentDAO这个类,让他不实现IStudentDAO接口,然后你写StudentDAO stdao = (StudentDAO)ctx.getBean("StudentDAO")应该不会报错了,如果有错误可能是提示你缺少CGLIB包。以上是一种解决方法,还有种解决方法,就是设置beanNameAutoProxyCreator的proxyTargetClass属性为true,意思是强制使用CGLIB代理,这样的话你写StudentDAO stdao = (StudentDAO)ctx.getBean("StudentDAO")也是正确的。当然以上两种方法的前提是你已经将CGLIB包加入到项目的classpath中了。
至于你问为什么接口类可以直接使用实现类里的方法,其实不是这个意思,而是实现类实现了接口的方法,然后将实现类实例化成接口类型,这个跟spring机制无关的。至于为什么要用接口,这个就有的说了,你可以网上去搜索下接口的作用,不过提醒你一点,接口不是说一定要用的,用到接口可能是为了规范化设计和为程序以后的扩展性考虑吧
spring的文档中这么写的:Spring AOP部分使用JDK动态代理或者CGLIB来为目标对象创建代理,如果被代理的目标对象实现了至少一个接口,则会使用JDK动态代理。所有该目标类型实现的接口都将被代理。若该目标对象没有实现任何接口,则创建一个CGLIB代理。
从你说的情况来看,你的StudentDAO肯定实现了IStudentDAO这个接口,并且beanNameAutoProxyCreator的proxyTargetClass这个属性设置为false或者没有设置这个属性,你可以修改下StudentDAO这个类,让他不实现IStudentDAO接口,然后你写StudentDAO stdao = (StudentDAO)ctx.getBean("StudentDAO")应该不会报错了,如果有错误可能是提示你缺少CGLIB包。以上是一种解决方法,还有种解决方法,就是设置beanNameAutoProxyCreator的proxyTargetClass属性为true,意思是强制使用CGLIB代理,这样的话你写StudentDAO stdao = (StudentDAO)ctx.getBean("StudentDAO")也是正确的。当然以上两种方法的前提是你已经将CGLIB包加入到项目的classpath中了。
至于你问为什么接口类可以直接使用实现类里的方法,其实不是这个意思,而是实现类实现了接口的方法,然后将实现类实例化成接口类型,这个跟spring机制无关的。至于为什么要用接口,这个就有的说了,你可以网上去搜索下接口的作用,不过提醒你一点,接口不是说一定要用的,用到接口可能是为了规范化设计和为程序以后的扩展性考虑吧
展开全部
视频情况不清楚,事务机制是这样的,如果发生了异常就会回滚,可能那两条语句在一个事务里面,所以一个失败就回滚了,虽然发了insert语句
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-01-14
展开全部
动力节点王勇老师录制的项目视频
DRP分销资源计划项目之业务介绍
DRP分销资源计划项目之数据库设计
动力节点_DRP分销资源计划项目之HTML
动力节点_DRP分销资源计划项目之CSS
动力节点_DRP分销资源计划项目之JavaScript
动力节点_DRP分销资源计划项目之Ajax
动力节点_DRP分销资源计划项目之JSP
动力节点_DRP分销资源计划项目之Servlet
动力节点_DRP分销资源计划项目之JDBC
动力节点_DRP分销资源计划项目之XML
动力节点_DRP分销资源计划项目之JSTL
动力节点_DRP分销资源计划项目之CVS
动力节点_DRP分销资源计划项目之Web Services
动力节点_DRP分销资源计划项目之Tomcat
动力节点_DRP分销资源计划项目之设计模式
动力节点_DRP分销资源计划项目之设计原则
动力节点_DRP分销资源计划项目之UML
动力节点_Struts
动力节点_Spring
动力节点_Hibernate
DRP分销资源计划项目之业务介绍
DRP分销资源计划项目之数据库设计
动力节点_DRP分销资源计划项目之HTML
动力节点_DRP分销资源计划项目之CSS
动力节点_DRP分销资源计划项目之JavaScript
动力节点_DRP分销资源计划项目之Ajax
动力节点_DRP分销资源计划项目之JSP
动力节点_DRP分销资源计划项目之Servlet
动力节点_DRP分销资源计划项目之JDBC
动力节点_DRP分销资源计划项目之XML
动力节点_DRP分销资源计划项目之JSTL
动力节点_DRP分销资源计划项目之CVS
动力节点_DRP分销资源计划项目之Web Services
动力节点_DRP分销资源计划项目之Tomcat
动力节点_DRP分销资源计划项目之设计模式
动力节点_DRP分销资源计划项目之设计原则
动力节点_DRP分销资源计划项目之UML
动力节点_Struts
动力节点_Spring
动力节点_Hibernate
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议看一下你配置的autocommit属性,修改一下,再看是否插进去了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
autocommit
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询