然后通过这些实现类进行数据库访问操作。如在OrderService下:
其中还值得注意的是,在各个实现类中ItemSqlMapDao并不包含对事务的处理,所有对于事务的处理都是在业务逻辑层调用。这样做的好处在于所有Dao的操作都是原子操作,方便进行各种业务逻辑的组装。(以前,我设计时候,这个地方没有设计好)第二、事务处理的研究此处涉及到了事务的处理,来分析一下事务处理的过程。首先看一个事务处理的时序图
从这张时序图可以看到事务的处理是由代理类DataProxy完成的,查看DataProxy的代码
根据这段代码应该很清楚的知道Dao框架采用AOP模式,截获所调用的方法,并检查事务处理是否已经显式的开始执行,如果没有,它将调用事务管理器中的startTransaction()创建一个新的事务处理调用,然后执行被截获的方法,然后commitTransaction。如果有,则直接执行所调用的方法。所以,在此Dao框架下,所有没有显式的通过startTransaction调用事务的方法,都是一个独立的事务。如果要想在一个事务中完成几次调用,必须自己通过DaoMangaer手动处理事务。至此,ibatis的JpetshopStore的持久层运行机制以及ibatis的Dao框架事务处理研究完毕。