spring+ibatis事务问题

fxltsbl 2008-05-17 05:55:21
spring+ibatis 用spring的事务管理,
问题:dao一个方法中执行2个操作,第一个操作执行完(第二个还没执行)时,抛出异常,但是第一个操作不能回滚,郁闷,为什么?提前谢谢各位xdjm。

下面是spring配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC
"-//SPRING/DTD BEAN/EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/ccl"></property>
<property name="username" value="root"></property>
<property name="password" value="admin"></property>
<property name="connectionProperties">
<props>
</props>
</property>
</bean>
<bean id="jdbcTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource"><ref local="dataSource"/></property>
</bean>
<bean id="jdbcTransactionProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
abstract="true">
<property name="transactionManager">
<ref bean="jdbcTransactionManager"/>
</property>
<property name="target">
<ref local="authenticationDAO" />
</property>
<property name="transactionAttributes">
<props>
<prop key="update*">PROPAGATION_REQUIRED,-AuthenticationException</prop>
</props>
</property>
</bean>
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<value>classpath:com/ppsoft/smart/conf/sqlMapConfig.xml</value>
</property>
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
<!-- Authentication Service Begin -->
<bean id="authenticationDAO" class="com.ppsoft.smart.application.authentication.dao.AuthenticationDAOImp">
<property name="sqlMapClient" ref="sqlMapClient"/>
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
<bean id="authenticationService" parent="jdbcTransactionProxy" >
<property name="target">
<bean class="com.ppsoft.smart.application.authentication.service.AuthenticationServiceImp">
<property name="authenticationDAO">
<ref bean="authenticationDAO"/>
</property>
</bean>
</property>
</bean>
<!-- Authentication Service End -->
</beans>

ibatis sqlMap配置文件
<?xml version="1.0" encoding="EUC-KR" standalone="no" ?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">

<sqlMapConfig>
<settings
cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
maxRequests="20"
maxSessions="10"
maxTransactions="10"
useStatementNamespaces="true"
/>

<sqlMap resource="com/ppsoft/smart/conf/test.xml"/>
</sqlMapConfig>

dao方法:
public void deleteStudent1() throws AuthenticationException{
try{
int i=1;
System.out.println("begin");
getSqlMapClientTemplate().update("test.updateStudent1", "");
if(i==1)
throw new AuthenticationException();
getSqlMapClientTemplate().update("test.updateStudent2", "");
System.out.println("over");
}catch(Exception e){
throw new AuthenticationException();
}
}
...全文
266 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yougucao379548695 2008-08-25
  • 打赏
  • 举报
回复
楼主看看这个就清楚啦
http://www.blogjava.net/freeman1984/archive/2007/12/07/166112.html
huayiluo 2008-06-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sljsuper 的回复:]
你的配置: <prop key= "update* "> PROPAGATION_REQUIRED,-AuthenticationException </prop>
你的方法:public void deleteStudent1() throws AuthenticationException
[/Quote]

我试过好像不用 deleteStudent1() throws AuthenticationException也可以正常处理事务的。
Landor2004 2008-06-23
  • 打赏
  • 举报
回复
<prop key= "update* ">。。。。。。。。。。
<prop key= "delete* ">。。。。。。。。。。
sljsuper 2008-06-23
  • 打赏
  • 举报
回复
你的配置:<prop key= "update* "> PROPAGATION_REQUIRED,-AuthenticationException </prop>
你的方法:public void deleteStudent1() throws AuthenticationException
xlongbuilder 2008-06-21
  • 打赏
  • 举报
回复
关注 马上也要用类似的架构了
nanjg 2008-05-17
  • 打赏
  • 举报
回复
- 只是对检查型的异常有意义吧
fxltsbl 2008-05-17
  • 打赏
  • 举报
回复
就是getSqlMapClientTemplate().update( "test.updateStudent1 ", " ");
执行成功了(查看数据库),
getSqlMapClientTemplate().update( "test.updateStudent2 ", " ");
没有执行成功

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧