我也谈嵌套事务
我相信数据库事务的问题,每个人都或多或少的使用过.我说句惭愧的话,关于事务嵌套的问题,我一直都没有找到一个满意的解决方案,小弟才疏学浅.但我还是把我的一些想法提出来,以便各位朋友交流和提出科学的方法.已解我心中的痛!
闲话就不多说了,接下来我举个例子。
有三个业务对象,这些对象只是例子,业务逻辑是否合理,不在本文章探讨范围。
1、客户对象(Customer)。对客户基本信息进行管理(登记、修改、删除);
2、预约(DestineBill)。对客户预约单进行管理(登记、修改、删除);
3、帐单(BillManage)。对帐单进行管理。
业务对象
闲话就不多说了,接下来我举个例子。
有三个业务对象,这些对象只是例子,业务逻辑是否合理,不在本文章探讨范围。
1、客户对象(Customer)。对客户基本信息进行管理(登记、修改、删除);
2、预约(DestineBill)。对客户预约单进行管理(登记、修改、删除);
3、帐单(BillManage)。对帐单进行管理。
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
他们单独执行时不会有什么问题。这时如果有另一个业务对象的业务包含这3个业务对象的Insert方法,并且在出错需要回滚时该怎么办呢?
这就是我想说的一个问题。
我现在的做法是:在业务对象基类中保存一个事务队列,来判断该事务是否需要提交(该事务是不是外部创建,不是外部创建就可以提交,不是外部创建的事务,该事务不提交)。
这样做了之后,最大的问题是数据库连接会经常超时,某些表会经常被占用(她处于事务中)。我不知道大型系统中一般是怎么来处理这个问题的。
希望大家提出你们宝贵的经验或建议。