首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

Spring3调整Hibernate3.6之二:用AOP管理事务处理

2012-11-22 
Spring3整合Hibernate3.6之二:用AOP管理事务处理整合以后可以借助Spring的AOP来管理Hibernate的事务1.先界

Spring3整合Hibernate3.6之二:用AOP管理事务处理


整合以后可以借助Spring的AOP来管理Hibernate的事务


1.先界定一个事务的边界,这里用的是“ add* ”

2.再把两件事情都放在一个service的操作中,第一件事情执行成功后,第二件事情抛出异常。

3.结果Spring抓取到异常后,把两步操作全都回滚


1.定义事务边界

applicationContext-common.xml中增加以下配置:

其中:expression="execution( * com.rt.sidemo.service.*.*(..)) 定义了此配置具体作用于那个service

其中:<tx:method name="add*" propagation="REQUIRED" rollback-for="java.lang.RuntionException" /> 定义了事务边界和具体处理策略

public void add(Student stu) {//整个add方法是一个事务的边界/* * 正常实例插入后,故意出错抛出 * 此时,连同‘已经’插入的正常实例一起回滚,也就是只要有异常,整部操作回滚 * 证明事务处理时是正确的 */Student stuNew = new Student();//正常实例,这个可以正常插入没问题stuNew.setStudentid(780);stuNew.setName("SH_first");stuNew.setAge(1);studentDAO.addStudent(stuNew);throw new RuntimeException();//故意抛出异常,让事务回滚}


3.执行结果

Hibernate自动打印出建表语句,显示实例已经插入成功

之后Spring抓到异常,又把事务边界内 已经成功执行的项目全都回滚






配置事务处理时遇到个小问题:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'StudentService' defined in file [E:\Java\Workspaces\MyEclipse 10\Spring_Hibernate\bin\com\rt\sidemo\service\StudentService.class]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/objectweb/asm/Type


删掉hibernate中的cglib解决的
网上说是hibernate中的cglib和spring的cglib冲突造成的














热点排行