- 浏览: 193208 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (121)
- java_基础 (26)
- java_web (15)
- javascript (9)
- extJS (0)
- dwr (0)
- guobin_ETL (1)
- guobin_ssh (17)
- guobin_webservice (1)
- guobin_jbpm (0)
- guobin_jquery (0)
- guobin_acegi (1)
- guobin_poi/jxl (2)
- guobin_multiThread (0)
- guobin_名称解释 (0)
- guobin_FLEX (0)
- guobin_php (0)
- guobin_ORACLE (1)
- guobin_mysql (0)
- guobin_linux (0)
- guobin_powerDesigner (0)
- guobin_visol (0)
- guobin_ER/STUDIO (0)
- guobin_jmesa (0)
- guobin_weblogic (0)
- guobin_kettle (0)
- guobin_一路风雨 (5)
- guobin_spark (0)
- java_xml (7)
- guobin_规则引擎 (0)
- 插件开发 (2)
- 软件管理 (3)
- spring mvc (2)
- java_jni (1)
- eclipse (1)
- oracle (0)
- 项目学习笔记 (1)
- java多线程学习记录 (9)
- websphere性能设置和日常维护 (2)
- (1)
- 系统软件架构设计 (1)
- ces (1)
- 需求分析 (2)
- IBM-CICS GATEWAY (1)
- 工具使用 (1)
- 网络信息安全编程 (1)
最新评论
-
yzh__:
学习一个
Hibernate 自关联注解方式 -
xiaoyahuang:
"2)将Sysdeo Plugin下的DevLoad ...
eclipse项目引用 -
guobin6125:
guobin6125 写道sfasshahhah评论的评论
欢迎使用Kit! -
guobin6125:
sfass
欢迎使用Kit! -
guobin6125:
tst23
欢迎使用Kit!
xml配置
Xml代码
1.<!-- 默认的数据源配置 -->
2.<bean id="talent.defaultDataSource"
3. class="org.springframework.jdbc.datasource.DriverManagerDataSource">
4. <property name="driverClassName"
5. value="${jdbc.default.driverClassName}" />
6. <property name="url" value="${jdbc.default.url}" />
7. <property name="username" value="${jdbc.default.username}" />
8. <property name="password" value="${jdbc.default.password}" />
9.</bean>
10.
11.<!-- 事务配置 -->
12.<bean id="talent.defaultTransactionManager"
13. class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
14. <property name="dataSource" ref="talent.defaultDataSource" />
15.</bean>
16.
17.<!-- 配置事务特性 -->
18.<tx:advice id="txAdvice"
19. transaction-manager="talent.defaultTransactionManager">
20. <tx:attributes>
21. <tx:method name="add*" propagation="REQUIRED" />
22. <tx:method name="save*" propagation="REQUIRED" />
23. <tx:method name="insert*" propagation="REQUIRED" />
24. <tx:method name="del*" propagation="REQUIRED" />
25. <tx:method name="update*" propagation="REQUIRED" />
26. <tx:method name="main*" propagation="REQUIRED" />
27. <tx:method name="*" read-only="true" />
28. </tx:attributes>
29.</tx:advice>
30.
31.<!-- 配置哪些类的方法需要进行事务管理 -->
32.<aop:config>
33. <aop:pointcut id="allManagerMethod"
34. expression="execution(* com.jstrd.talent.manager.MyTransactionTemplate.*(..))" />
35. <aop:advisor advice-ref="txAdvice"
36. pointcut-ref="allManagerMethod" />
37.</aop:config>
38.
39.<!-- 默认的DaoFactory -->
40.<bean id="talent.defaultDaoFactory"
41. class="com.jstrd.talent.dao.DaoFactory">
42. <constructor-arg value="${jdbc.default.db.dialect}" />
43.</bean>
44.
45.<!-- 默认的SqlMapClient -->
46.<bean id="talent.defaultSqlMapClient"
47. class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
48. <property name="dataSource" ref="talent.defaultDataSource" />
49. <property name="configLocation"
50. value="classpath:talent/ibatis/sql-map-config.xml" />
51. <!-- 自动加载sql-mapping文件 -->
52. <property name="mappingLocations">
53. <value>${ibatis.mappingLocations}</value>
54. </property>
55. <property name="useTransactionAwareDataSource" value="true"></property>
56.</bean>
57.
58.<!-- 默认的SqlMapDao -->
59.<bean id="talent.defaultSqlMapDao"
60. class="com.jstrd.talent.dao.SqlMapDao">
61. <property name="sqlMapClient" ref="talent.defaultSqlMapClient" />
62.</bean>
63.
64.<!-- 默认的SqlMapClientTemplate -->
65.<bean id="talent.defaultSqlMapClientTemplate"
66. class="org.springframework.orm.ibatis.SqlMapClientTemplate">
67. <property name="sqlMapClient" ref="talent.defaultSqlMapClient" />
68.</bean>
<!-- 默认的数据源配置 -->
<bean id="talent.defaultDataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
value="${jdbc.default.driverClassName}" />
<property name="url" value="${jdbc.default.url}" />
<property name="username" value="${jdbc.default.username}" />
<property name="password" value="${jdbc.default.password}" />
</bean>
<!-- 事务配置 -->
<bean id="talent.defaultTransactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="talent.defaultDataSource" />
</bean>
<!-- 配置事务特性 -->
<tx:advice id="txAdvice"
transaction-manager="talent.defaultTransactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="del*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="main*" propagation="REQUIRED" />
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>
<!-- 配置哪些类的方法需要进行事务管理 -->
<aop:config>
<aop:pointcut id="allManagerMethod"
expression="execution(* com.jstrd.talent.manager.MyTransactionTemplate.*(..))" />
<aop:advisor advice-ref="txAdvice"
pointcut-ref="allManagerMethod" />
</aop:config>
<!-- 默认的DaoFactory -->
<bean id="talent.defaultDaoFactory"
class="com.jstrd.talent.dao.DaoFactory">
<constructor-arg value="${jdbc.default.db.dialect}" />
</bean>
<!-- 默认的SqlMapClient -->
<bean id="talent.defaultSqlMapClient"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="dataSource" ref="talent.defaultDataSource" />
<property name="configLocation"
value="classpath:talent/ibatis/sql-map-config.xml" />
<!-- 自动加载sql-mapping文件 -->
<property name="mappingLocations">
<value>${ibatis.mappingLocations}</value>
</property>
<property name="useTransactionAwareDataSource" value="true"></property>
</bean>
<!-- 默认的SqlMapDao -->
<bean id="talent.defaultSqlMapDao"
class="com.jstrd.talent.dao.SqlMapDao">
<property name="sqlMapClient" ref="talent.defaultSqlMapClient" />
</bean>
<!-- 默认的SqlMapClientTemplate -->
<bean id="talent.defaultSqlMapClientTemplate"
class="org.springframework.orm.ibatis.SqlMapClientTemplate">
<property name="sqlMapClient" ref="talent.defaultSqlMapClient" />
</bean>
java代码
Java代码
1.public class MyTransactionTemplate {
2. public void addXX() throws Exception {
3. SqlMapDao dao = DaoFactory.getSqlMapDao();
4. SqlMapClientTemplate sqlMap = dao.getSqlMapClientTemplate();//dao.getSqlMapClientTemplate();//(SqlMapClientTemplate)BeanFactory.getBean("talent.defaultSqlMapClientTemplate");
5. sqlMap.update("t_user.delete");
6. sqlMap.update("t_user.insert", new TUser(29, "tan29"));
7. sqlMap.update("t_user.insert", new TUser(30, "tan30"));
8. sqlMap.update("t_user.insert", new TUser(32, "tan32"));
9.
10. sqlMap.update("t_user.updateById", new TUser(29, "tan30"));//这里违反唯一约束,会抛异常的
11. sqlMap.update("t_user.updateById", new TUser(29, "tan28"));
12. }
13.}
public class MyTransactionTemplate {
public void addXX() throws Exception {
SqlMapDao dao = DaoFactory.getSqlMapDao();
SqlMapClientTemplate sqlMap = dao.getSqlMapClientTemplate();//dao.getSqlMapClientTemplate();//(SqlMapClientTemplate)BeanFactory.getBean("talent.defaultSqlMapClientTemplate");
sqlMap.update("t_user.delete");
sqlMap.update("t_user.insert", new TUser(29, "tan29"));
sqlMap.update("t_user.insert", new TUser(30, "tan30"));
sqlMap.update("t_user.insert", new TUser(32, "tan32"));
sqlMap.update("t_user.updateById", new TUser(29, "tan30"));//这里违反唯一约束,会抛异常的
sqlMap.update("t_user.updateById", new TUser(29, "tan28"));
}
}
java代码中,连续几个insert,然后两上update,其中一个update是会抛异常的。但是发现前面的insert已经在数据库中生效了,并不回滚
问题补充:
数据库是mysql5
"MyTransactionTemplate根本没有处于事务中啊"??已经配置在其中了的:
execution(* com.jstrd.talent.manager.MyTransactionTemplate.*(..))"
问题补充:
谢谢kyo100900的回答!我改成InnoDb后,事务还是没控制住,
日志发现sqlMap.update()每次都会
Fetching JDBC Connection from DataSource
然后
Returning JDBC Connection to DataSource
这里可能也有问题?!
问题补充:
换了oracle环境还是一样,我怀疑是配错了
问题补充:
xml配置
<pre name="code" class="xml">
<!-- 默认的数据源配置 -->
<bean id="talent.defaultDataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
value="${jdbc.default.driverClassName}" />
<property name="url" value="${jdbc.default.url}" />
<property name="username" value="${jdbc.default.username}" />
<property name="password" value="${jdbc.default.password}" />
</bean>
<!-- 事务配置 -->
<bean id="talent.defaultTransactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="talent.defaultDataSource" />
</bean>
<!-- 配置事务特性 -->
<tx:advice id="txAdvice"
transaction-manager="talent.defaultTransactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="del*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="main*" propagation="REQUIRED" />
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>
<!-- 配置哪些类的方法需要进行事务管理 -->
<aop:config>
<aop:pointcut id="allManagerMethod"
expression="execution(* com.jstrd.talent.manager.MyTransactionTemplate.*(..))" />
<aop:advisor advice-ref="txAdvice"
pointcut-ref="allManagerMethod" />
</aop:config>
<!-- 默认的DaoFactory -->
<bean id="talent.defaultDaoFactory"
class="com.jstrd.talent.dao.DaoFactory">
<constructor-arg value="${jdbc.default.db.dialect}" />
</bean>
<!-- 默认的SqlMapClient -->
<bean id="talent.defaultSqlMapClient"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="dataSource" ref="talent.defaultDataSource" />
<property name="configLocation"
value="classpath:talent/ibatis/sql-map-config.xml" />
<!-- 自动加载sql-mapping文件 -->
<property name="mappingLocations">
<value>${ibatis.mappingLocations}</value>
</property>
<property name="useTransactionAwareDataSource" value="true"></property>
</bean>
<!-- 默认的SqlMapDao -->
<bean id="talent.defaultSqlMapDao"
class="com.jstrd.talent.dao.SqlMapDao">
<property name="sqlMapClient" ref="talent.defaultSqlMapClient" />
</bean>
<!-- 默认的SqlMapClientTemplate -->
<bean id="talent.defaultSqlMapClientTemplate"
class="org.springframework.orm.ibatis.SqlMapClientTemplate">
<property name="sqlMapClient" ref="talent.defaultSqlMapClient" />
</bean>
</pre>
java代码
<pre name="code" class="java">
public class MyTransactionTemplate {
public void addXX() throws Exception {
SqlMapDao dao = DaoFactory.getSqlMapDao();
SqlMapClientTemplate sqlMap = dao.getSqlMapClientTemplate();//dao.getSqlMapClientTemplate();//(SqlMapClientTemplate)BeanFactory.getBean("talent.defaultSqlMapClientTemplate");
sqlMap.update("t_user.delete");
sqlMap.update("t_user.insert", new TUser(29, "tan29"));
sqlMap.update("t_user.insert", new TUser(30, "tan30"));
sqlMap.update("t_user.insert", new TUser(32, "tan32"));
sqlMap.update("t_user.updateById", new TUser(29, "tan30"));//这里违反唯一约束,会抛异常的
sqlMap.update("t_user.updateById", new TUser(29, "tan28"));
}
}
</pre>
java代码中,连续几个insert,然后两上update,其中一个update是会抛异常的。但是发现前面的insert已经在数据库中生效了,并不回滚
<strong>问题补充:</strong>
数据库是mysql5
"MyTransactionTemplate根本没有处于事务中啊"??已经配置在其中了的:
execution(* com.jstrd.talent.manager.MyTransactionTemplate.*(..))"
<strong>问题补充:</strong>
谢谢kyo100900的回答!我改成InnoDb后,事务还是没控制住,
日志发现sqlMap.update()每次都会
Fetching JDBC Connection from DataSource
然后
Returning JDBC Connection to DataSource
这里可能也有问题?!
<strong>问题补充:</strong>
换了oracle环境还是一样,我怀疑是配错了
调试发现SqlMapClientTemplate的事务管理器为com.ibatis.sqlmap.engine.transaction.TransactionManager@19f9c7a.跟配置的不一样啊
问题补充:
"MyTransactionTemplate根本没有处于事务中啊"??已经配置在其中了的:
execution(* com.jstrd.talent.manager.MyTransactionTemplate.*(..))"
<strong>问题补充:</strong>
谢谢kyo100900的回答!我改成InnoDb后,事务还是没控制住,
日志发现sqlMap.update()每次都会
Fetching JDBC Connection from DataSource
然后
Returning JDBC Connection to DataSource
这里可能也有问题?!
<strong>问题补充:</strong>
换了oracle环境还是一样,我怀疑是配错了
调试发现SqlMapClientTemplate的事务管理器为com.ibatis.sqlmap.engine.transaction.TransactionManager@19f9c7a.跟配置的不一样啊
Xml代码
1.<!-- 默认的数据源配置 -->
2.<bean id="talent.defaultDataSource"
3. class="org.springframework.jdbc.datasource.DriverManagerDataSource">
4. <property name="driverClassName"
5. value="${jdbc.default.driverClassName}" />
6. <property name="url" value="${jdbc.default.url}" />
7. <property name="username" value="${jdbc.default.username}" />
8. <property name="password" value="${jdbc.default.password}" />
9.</bean>
10.
11.<!-- 事务配置 -->
12.<bean id="talent.defaultTransactionManager"
13. class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
14. <property name="dataSource" ref="talent.defaultDataSource" />
15.</bean>
16.
17.<!-- 配置事务特性 -->
18.<tx:advice id="txAdvice"
19. transaction-manager="talent.defaultTransactionManager">
20. <tx:attributes>
21. <tx:method name="add*" propagation="REQUIRED" />
22. <tx:method name="save*" propagation="REQUIRED" />
23. <tx:method name="insert*" propagation="REQUIRED" />
24. <tx:method name="del*" propagation="REQUIRED" />
25. <tx:method name="update*" propagation="REQUIRED" />
26. <tx:method name="main*" propagation="REQUIRED" />
27. <tx:method name="*" read-only="true" />
28. </tx:attributes>
29.</tx:advice>
30.
31.<!-- 配置哪些类的方法需要进行事务管理 -->
32.<aop:config>
33. <aop:pointcut id="allManagerMethod"
34. expression="execution(* com.jstrd.talent.manager.MyTransactionTemplate.*(..))" />
35. <aop:advisor advice-ref="txAdvice"
36. pointcut-ref="allManagerMethod" />
37.</aop:config>
38.
39.<!-- 默认的DaoFactory -->
40.<bean id="talent.defaultDaoFactory"
41. class="com.jstrd.talent.dao.DaoFactory">
42. <constructor-arg value="${jdbc.default.db.dialect}" />
43.</bean>
44.
45.<!-- 默认的SqlMapClient -->
46.<bean id="talent.defaultSqlMapClient"
47. class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
48. <property name="dataSource" ref="talent.defaultDataSource" />
49. <property name="configLocation"
50. value="classpath:talent/ibatis/sql-map-config.xml" />
51. <!-- 自动加载sql-mapping文件 -->
52. <property name="mappingLocations">
53. <value>${ibatis.mappingLocations}</value>
54. </property>
55. <property name="useTransactionAwareDataSource" value="true"></property>
56.</bean>
57.
58.<!-- 默认的SqlMapDao -->
59.<bean id="talent.defaultSqlMapDao"
60. class="com.jstrd.talent.dao.SqlMapDao">
61. <property name="sqlMapClient" ref="talent.defaultSqlMapClient" />
62.</bean>
63.
64.<!-- 默认的SqlMapClientTemplate -->
65.<bean id="talent.defaultSqlMapClientTemplate"
66. class="org.springframework.orm.ibatis.SqlMapClientTemplate">
67. <property name="sqlMapClient" ref="talent.defaultSqlMapClient" />
68.</bean>
<!-- 默认的数据源配置 -->
<bean id="talent.defaultDataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
value="${jdbc.default.driverClassName}" />
<property name="url" value="${jdbc.default.url}" />
<property name="username" value="${jdbc.default.username}" />
<property name="password" value="${jdbc.default.password}" />
</bean>
<!-- 事务配置 -->
<bean id="talent.defaultTransactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="talent.defaultDataSource" />
</bean>
<!-- 配置事务特性 -->
<tx:advice id="txAdvice"
transaction-manager="talent.defaultTransactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="del*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="main*" propagation="REQUIRED" />
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>
<!-- 配置哪些类的方法需要进行事务管理 -->
<aop:config>
<aop:pointcut id="allManagerMethod"
expression="execution(* com.jstrd.talent.manager.MyTransactionTemplate.*(..))" />
<aop:advisor advice-ref="txAdvice"
pointcut-ref="allManagerMethod" />
</aop:config>
<!-- 默认的DaoFactory -->
<bean id="talent.defaultDaoFactory"
class="com.jstrd.talent.dao.DaoFactory">
<constructor-arg value="${jdbc.default.db.dialect}" />
</bean>
<!-- 默认的SqlMapClient -->
<bean id="talent.defaultSqlMapClient"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="dataSource" ref="talent.defaultDataSource" />
<property name="configLocation"
value="classpath:talent/ibatis/sql-map-config.xml" />
<!-- 自动加载sql-mapping文件 -->
<property name="mappingLocations">
<value>${ibatis.mappingLocations}</value>
</property>
<property name="useTransactionAwareDataSource" value="true"></property>
</bean>
<!-- 默认的SqlMapDao -->
<bean id="talent.defaultSqlMapDao"
class="com.jstrd.talent.dao.SqlMapDao">
<property name="sqlMapClient" ref="talent.defaultSqlMapClient" />
</bean>
<!-- 默认的SqlMapClientTemplate -->
<bean id="talent.defaultSqlMapClientTemplate"
class="org.springframework.orm.ibatis.SqlMapClientTemplate">
<property name="sqlMapClient" ref="talent.defaultSqlMapClient" />
</bean>
java代码
Java代码
1.public class MyTransactionTemplate {
2. public void addXX() throws Exception {
3. SqlMapDao dao = DaoFactory.getSqlMapDao();
4. SqlMapClientTemplate sqlMap = dao.getSqlMapClientTemplate();//dao.getSqlMapClientTemplate();//(SqlMapClientTemplate)BeanFactory.getBean("talent.defaultSqlMapClientTemplate");
5. sqlMap.update("t_user.delete");
6. sqlMap.update("t_user.insert", new TUser(29, "tan29"));
7. sqlMap.update("t_user.insert", new TUser(30, "tan30"));
8. sqlMap.update("t_user.insert", new TUser(32, "tan32"));
9.
10. sqlMap.update("t_user.updateById", new TUser(29, "tan30"));//这里违反唯一约束,会抛异常的
11. sqlMap.update("t_user.updateById", new TUser(29, "tan28"));
12. }
13.}
public class MyTransactionTemplate {
public void addXX() throws Exception {
SqlMapDao dao = DaoFactory.getSqlMapDao();
SqlMapClientTemplate sqlMap = dao.getSqlMapClientTemplate();//dao.getSqlMapClientTemplate();//(SqlMapClientTemplate)BeanFactory.getBean("talent.defaultSqlMapClientTemplate");
sqlMap.update("t_user.delete");
sqlMap.update("t_user.insert", new TUser(29, "tan29"));
sqlMap.update("t_user.insert", new TUser(30, "tan30"));
sqlMap.update("t_user.insert", new TUser(32, "tan32"));
sqlMap.update("t_user.updateById", new TUser(29, "tan30"));//这里违反唯一约束,会抛异常的
sqlMap.update("t_user.updateById", new TUser(29, "tan28"));
}
}
java代码中,连续几个insert,然后两上update,其中一个update是会抛异常的。但是发现前面的insert已经在数据库中生效了,并不回滚
问题补充:
数据库是mysql5
"MyTransactionTemplate根本没有处于事务中啊"??已经配置在其中了的:
execution(* com.jstrd.talent.manager.MyTransactionTemplate.*(..))"
问题补充:
谢谢kyo100900的回答!我改成InnoDb后,事务还是没控制住,
日志发现sqlMap.update()每次都会
Fetching JDBC Connection from DataSource
然后
Returning JDBC Connection to DataSource
这里可能也有问题?!
问题补充:
换了oracle环境还是一样,我怀疑是配错了
问题补充:
xml配置
<pre name="code" class="xml">
<!-- 默认的数据源配置 -->
<bean id="talent.defaultDataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
value="${jdbc.default.driverClassName}" />
<property name="url" value="${jdbc.default.url}" />
<property name="username" value="${jdbc.default.username}" />
<property name="password" value="${jdbc.default.password}" />
</bean>
<!-- 事务配置 -->
<bean id="talent.defaultTransactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="talent.defaultDataSource" />
</bean>
<!-- 配置事务特性 -->
<tx:advice id="txAdvice"
transaction-manager="talent.defaultTransactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="del*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="main*" propagation="REQUIRED" />
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>
<!-- 配置哪些类的方法需要进行事务管理 -->
<aop:config>
<aop:pointcut id="allManagerMethod"
expression="execution(* com.jstrd.talent.manager.MyTransactionTemplate.*(..))" />
<aop:advisor advice-ref="txAdvice"
pointcut-ref="allManagerMethod" />
</aop:config>
<!-- 默认的DaoFactory -->
<bean id="talent.defaultDaoFactory"
class="com.jstrd.talent.dao.DaoFactory">
<constructor-arg value="${jdbc.default.db.dialect}" />
</bean>
<!-- 默认的SqlMapClient -->
<bean id="talent.defaultSqlMapClient"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="dataSource" ref="talent.defaultDataSource" />
<property name="configLocation"
value="classpath:talent/ibatis/sql-map-config.xml" />
<!-- 自动加载sql-mapping文件 -->
<property name="mappingLocations">
<value>${ibatis.mappingLocations}</value>
</property>
<property name="useTransactionAwareDataSource" value="true"></property>
</bean>
<!-- 默认的SqlMapDao -->
<bean id="talent.defaultSqlMapDao"
class="com.jstrd.talent.dao.SqlMapDao">
<property name="sqlMapClient" ref="talent.defaultSqlMapClient" />
</bean>
<!-- 默认的SqlMapClientTemplate -->
<bean id="talent.defaultSqlMapClientTemplate"
class="org.springframework.orm.ibatis.SqlMapClientTemplate">
<property name="sqlMapClient" ref="talent.defaultSqlMapClient" />
</bean>
</pre>
java代码
<pre name="code" class="java">
public class MyTransactionTemplate {
public void addXX() throws Exception {
SqlMapDao dao = DaoFactory.getSqlMapDao();
SqlMapClientTemplate sqlMap = dao.getSqlMapClientTemplate();//dao.getSqlMapClientTemplate();//(SqlMapClientTemplate)BeanFactory.getBean("talent.defaultSqlMapClientTemplate");
sqlMap.update("t_user.delete");
sqlMap.update("t_user.insert", new TUser(29, "tan29"));
sqlMap.update("t_user.insert", new TUser(30, "tan30"));
sqlMap.update("t_user.insert", new TUser(32, "tan32"));
sqlMap.update("t_user.updateById", new TUser(29, "tan30"));//这里违反唯一约束,会抛异常的
sqlMap.update("t_user.updateById", new TUser(29, "tan28"));
}
}
</pre>
java代码中,连续几个insert,然后两上update,其中一个update是会抛异常的。但是发现前面的insert已经在数据库中生效了,并不回滚
<strong>问题补充:</strong>
数据库是mysql5
"MyTransactionTemplate根本没有处于事务中啊"??已经配置在其中了的:
execution(* com.jstrd.talent.manager.MyTransactionTemplate.*(..))"
<strong>问题补充:</strong>
谢谢kyo100900的回答!我改成InnoDb后,事务还是没控制住,
日志发现sqlMap.update()每次都会
Fetching JDBC Connection from DataSource
然后
Returning JDBC Connection to DataSource
这里可能也有问题?!
<strong>问题补充:</strong>
换了oracle环境还是一样,我怀疑是配错了
调试发现SqlMapClientTemplate的事务管理器为com.ibatis.sqlmap.engine.transaction.TransactionManager@19f9c7a.跟配置的不一样啊
问题补充:
"MyTransactionTemplate根本没有处于事务中啊"??已经配置在其中了的:
execution(* com.jstrd.talent.manager.MyTransactionTemplate.*(..))"
<strong>问题补充:</strong>
谢谢kyo100900的回答!我改成InnoDb后,事务还是没控制住,
日志发现sqlMap.update()每次都会
Fetching JDBC Connection from DataSource
然后
Returning JDBC Connection to DataSource
这里可能也有问题?!
<strong>问题补充:</strong>
换了oracle环境还是一样,我怀疑是配错了
调试发现SqlMapClientTemplate的事务管理器为com.ibatis.sqlmap.engine.transaction.TransactionManager@19f9c7a.跟配置的不一样啊
发表评论
-
从 iBatis 到 MyBatis - MyBatis 简明学习教程
2012-11-19 17:22 1126从 iBatis 到 MyBatis ... -
java 注解
2012-09-02 21:47 1050背景 最近在为公司 ... -
spring注解式事务管理实例@Transactional(propagation=Propagation.REQUIRED,readOnly=false)
2012-07-17 21:58 2361spring注解式事务管理实例@Transactio ... -
MyEclipse内存不足以及参数配置“ -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M ”
2012-07-17 16:00 1030MyEclipse内存不足以 ... -
StringUtils 工具类的常用方法
2012-05-20 22:33 4542StringUtils 源码,使用的是commons-lang ... -
获得List<T> T的类型
2012-05-20 21:45 808public class GenericTest { ... -
可以使用java.util.Calendar来取得相关日期信息
2012-04-19 20:31 993import java.text.Parse ... -
提供一个JAVA过滤HTML代码和截取字符串的类(包括测试用例)
2012-03-07 22:23 1016package com.aodun.puhbs.blog ... -
ceshhisdf
2012-02-20 16:45 839ceshi -
JDKjdk1.4、jdk5.0、JDK6.0、 JDK7.0 新特性
2012-02-19 11:45 2976jdk1.4、jdk5.0、JDK6.0、 ... -
为什么Java中的long与double不是线程安全的?
2012-02-19 11:22 1844Long与double操作并 ... -
线程安全与线程不安全的区别
2012-02-19 11:15 664线程安全就是多线程访问时,采用了加锁机制(如synchr ... -
JConsole手册
2012-02-18 11:06 870http://blog.csdn.net/ajian005/a ... -
JVM调优总结(精)
2012-02-18 10:42 1949转自:http://pengjiaheng.javaey ... -
Java内存Dump文件查看和分析工具介绍
2012-02-16 23:43 1279为了查red5-0.7.0的内存泄露问题,由于dump文 ... -
探究JVM内存泄露
2012-02-16 23:32 1212WEB 服务总是莫名其妙的运行一段时间后 JVM 直接 ... -
设置JVM内存
2012-02-16 23:00 1134这里向大家简单介绍一下巧借MyEclipse设置JVM突 ... -
spring配置ibatis的jdbc方式和proxool、c3p0连接池方式
2011-06-30 10:19 1505spring配置ibatis的jdbc方式和proxool、c ... -
struts 格式化金额,日期
2011-04-11 17:50 13532010-07-21 Struts2中对数字进行格式化,1、将 ... -
log4j的日志处理
2011-03-12 12:34 888log4j的日志处理2009-06-11 ...
相关推荐
spring ibatis 配置spring ibatis 配置spring ibatis 配置spring ibatis 配置
很好的spring+ibatis事务的配置文档.
SPRING与IBATIS整合采用保留IBATIS事务,可自己控制回滚!
<value>classpath:ibatis-Base.xml <ref bean="dataSource"/> <!-- 配置sqlMapClientTemplate模板 --> <bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis....
SPRING与IBATIS整合采用保留IBATIS事务,可自己控制回滚!
使用基于AOP的Spring特性,如声明型事务管理(Declarative Transaction Management),也要在应用里包含这个jar包。 (4) spring-context.jar 这个jar文件为Spring核心提供了大量扩展。可以找到使用Spring ...
【第九章】 Spring的事务 之 9.2 事务管理器 ——跟我学spring3 【第九章】 Spring的事务 之 9.3 编程式事务 ——跟我学spring3 【第九章】 Spring的事务 之 9.4 声明式事务 ——跟我学spring3 【第十章】集成其它...
自己配置的springmvc+ibatis框架,自己找齐了包,不容易啊,所以上来跟大家分享一下,spring自动注入包,事务包,ibatis包,数据库连接包,都齐全的,仅局限于springmvc+ibatis,这些包不多,不少,刚够
对ORM的支持 之 8.1 概述 8.2 集成Hibernate3 8.3 集成iBATIS 8.4 集成JPA 9.1 数据库事务概述 9.2 事务管理器 9.3 编程式事务 9.4 声明式事务 10.1 概述 10.2 集成Struts1.x 10.3 集成Struts2.x 10.4 集成JSF 11.1 ...
NULL 博文链接:https://wilr.iteye.com/blog/1190524
最流行技术Struts2.1 +Spring 2.5.1+ibatis2.3整合开发而成,这与我以前发布的版本中最大特色是整合了Spring2.5.1中的注解功能和半自动化工具ibatis技术,这是本示例的两大特色,简化了配置文件的烦锁,希望能给更多喜欢...
系统采用spring2.5 + ibatis2.3.4,采用注解方式配置,非xml配置方式。包括分页排序查询、新增、修改、删除、登陆验证功能,数据库采用oracle。
spring-beans.jar(必须):这 个jar 文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean 以及进行Inversion of Control / Dependency Injection(IoC/DI)操作相关的所有类。如果应用只需基本的IoC/DI ...
Spring+iBatis+JOTM实现JTA事务: 如何处理跨库事物:spring + jtom 的jta事务是个很好的选择. 这个源码示例非常不错,包括所有的源码和jar包,下载后eclipse 或 myeclipse 导入就能用。 里面有详细的说明和注释,...
-- 配置事务管理器,這個事務性是爭對pdm數據庫的 --> <bean id="transactionManagerPdm" class="org.springframework.jdbc.datasource.DataSourceTransactionManager " p:dataSource-ref="dataSourcePdm"/> ...
这个Project是关于ibatis 和 spring 框架整合的Demo。 需要向大家说明一下几个需要注意的地方: ...2.ibatis和spring的整合主要是spring的配置文件需要配置ibatis的相关配置,如:数据库连接及事务管理等。
(2) spring-beans.jar 这个jar文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行Inversion of Control / Dependency Injection(IoC/DI)操作相关的所有类。如果应用只需基本的IoC/DI支持,...
2.4.1. 在XML里更为简单的声明性事务配置 2.4.2. JPA 2.4.3. 异步的JMS 2.4.4. JDBC 2.5. Web层 2.5.1. Spring MVC的表单标签库 2.5.2. Spring MVC合理的默认值 2.5.3. Portlet 框架 2.6. 其他特性 2.6.1. 动态语言...
struts hibernate dwr 与Spring完全结合,实现用户列表、信息增、删、改、查、维护时用户重名提示等功能,还包括页面自动转码设置(web.xml),Hibernate管理服务按Bean名称拦截并进行Spring事务管理,完全由Spring...
这是一个servlet + spring + ibatis 的完整例子,里面包含了spring的事务管理以及所有的jar包,下载下来后直接改下数据库配置就可以运行!从界面到action,业务层,dao层有现成的代码!