4.为什么SqlSession会是不安全的以及转账事务为什么要放在持久层?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40406929/article/details/83183706
  1. 为什么jdbc 的template必须从业务层一直传到持久层?因为事务要在业务层。

怎么提交事务?connnection的conmmit方法。

为什么事务层要放在业务层控制?看下图:

如果放在持久层的话,每一个connection完成之后,都会完成一个提交自己的connection的独立的事务。那么每个提交的connection没有联系了,转账过程中也会出现问题,也无法解决,无法回滚。所以需要不能允许类似上图中的多个connection,所以需要放在业务层控制一个connection,转账的过程中出现问题,那么整个事务将会回滚。

这个也表示了为什么SqlSession为什么是不安全的

解决办法

1.线程ThreadLock解决,就是一个线程操作多个对象

这也是每个对象为什么只有一个操作数据库的对象?

猜你喜欢

转载自blog.csdn.net/qq_40406929/article/details/83183706