满心期望,收获的确实失望

    由于项目是基于原型系统调整,而原型系统中没有做任何的事务处理,所以想整合一个简单的事务控制包。

    整理项目框架时,发现项目project中引用了其他公司开发的事务控制包,更巧的是,我毕业后去的就是那家公司,而且进入的第一个项目的数据库事务控制就是这个包做的框架,记得当时还反编译看过源码。

    现在需要自己整了,当然希望对自己使用的东西有所了解,于是又反编译看源码,看了一天时间,最后的结论是:事务控制很简单,必须严格的遵守事务控制规则,这些规则包括:

    1、不能嵌套事务。如果存在嵌套事务,则外层的事务回滚不能回滚内层事务的提交。

    2、不能手动释放Connection链接,因为Connection对象是线程内共享的。如果想不使用事务,只从框架中获取数据库链接并人为控制链接的生命周期,将影响到同一线程的其他数据库操作。

    最后的测试也验证了上面两点。

    这就有点像简单的建立一个ThreadLocal<Connection>对象,必须严格的按照

 

TransactionManager.beginTransaction();

getConnection();

只能有一段事务码

TransactionManager.commitTransaction();

IF Exception exist

   Transaction.rollBack();   

中间如果嵌套事务,相当于内外两个单独的事务(即同一个Connection提交两次)。

 

其实这之前我自己做了一个简单的事务控制框架,可以实现嵌套和撇开事务控制单独使用Connection对象。但第一次做,怕出问题,所以心里没底。结果看了那个源码后,感觉只是将程序的层次写得更抽象和复杂了,本质的功能却很死板并且容易出问题。

     诶,菜鸟的起步阶段可能就是这么的举步维艰!特别是项目组只有自己一个人,而且需要看前辈们写的那些没有一点组织性的代码。这种时刻只有一种感觉——什么方面的只是都感觉欠缺,不够用;什么都想学;但学什么都有点力不从心。项目时间紧迫,没什么时间可以抽出来潜心的学点什么,都是囫囵吞枣,一知半解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值