单Connection与多事务的处理

通常,我们在使用connection操作数据库时,都是利用数据库本身的特性来实现的。通常一个事务对应一个connection,一个数据库。

但有的时候一个connection并不能保证事务的正确顺利完成,比如:对于一个企业来说,处理订单这个事务,假如有两个数据库,一个用来记录订单所产生的产品信息,而财物相关的数据记录在异地的另一个数据库中,这样一个connection是无法满足要求的。因为connection是数据库自身提供的一种对其自身操作的功能,所以这种情况下,我们就需要至少两个数据库的connection来分别操作这两个数据库。假如事务的处理顺序是先操作产品的数据,后操作财物的数据,这就带出一个同步的问题,一旦操作财物的事务出现异常,即使产品的记录已经生成,也必须得回滚,这样才能保持数据的同步,不会产生脏数据。这种同步机制可由一个叫TransectionManager(事务管理器)来完成,也叫JTA,它多是在applicationServer上实现的。但我们常用的tomcat并不具备这种功能,而jboss能实现。不过tomcat也可借助第三方的类库来帮助实现。

你可能感兴趣的:(database)