关于spring手动进行事务提交以及回滚的问题。

来源:互联网 发布:鼠标对码软件 编辑:程序博客网 时间:2024/05/30 07:14

首先,就我的理解。

事务的过程如下:开始事务--------提交/回滚事务。

事务就是一系列执行的过程。开始之后,就会执行过程,并且记住过程。这个时候,数据库中所用的表是被锁定了的。
所以说,如果你只开始了事务,没有进行commit或者rollback,数据库中的所用的表就会被锁定。这个时候数据库中的表是打不开的,会出现一直在查询的过程。只能把窗口关掉,然后进行数据库表解锁的操作。

所以开始事务之后,一定要进行  提交/回滚事务的操作。
并且,commit之后就不能再rollback了。commit和rollback不能连续执行。否则会报
Transaction is already completed - do not call commit or rollback more than once per...

下面说下如何执行手动执行 事务提交以及回滚 的操作

①JDBC事务:

spring中的配置:
<!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean><tx:annotation-driven transaction-manager="transactionManager"/>


impl中通过这样获取:
@Resource(name="transactionManager")private DataSourceTransactionManager transactionManager;


具体执行操作:

DefaultTransactionDefinition def = new DefaultTransactionDefinition();def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); // 事物隔离级别,开启新事务,这样会比较安全些。TransactionStatus status = transactionManager.getTransaction(def); // 获得事务状态try {//逻辑代码,可以写上你的逻辑处理代码transactionManager.commit(status);} catch (Exception e) {transactionManager.rollback(status);}



再加上一点:
insert多条记录的时候,需要注意:如果一条insert语句  插入超过 120条记录(最好不要超过100条),就会出错:
传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。此 RPC 请求中提供了过多的参数。最多应为 2100。
所以这个就需要数据进行分组了。

还有就是大家通过eclipse,myeclipse或者idea有人会遇见通过maven下载jar包非常慢的情况,

在这里给大家推荐一个通过ss翻墙的方式,国内目前由于zf严厉打击VPN,博主买的loco网络加速器已经登录不了了。玛德官网都找不到了,更不要提找客服退款了。

下面是链接,博主测试了下网速还是可以的,感觉比loco买的高级VIP套餐还要好,当然loco也有可能是被查水表限速了。

价格也更优惠,15美刀1年,可以用支付宝支付。

Shadowsocks



参考:spring事务详解,springmvc手动控制事务


1 0
原创粉丝点击