这几天翻了一下Mybatis的代码,翻之前在网上找了一下,也没找到标题的合适的答案,在这里做个总结吧。
Mybatis的Connection对应的是Oracle的session
mybatis的一个connection对应一个数据库的长链接,就是oracle的session,即通过show v$session查看的链接。
Mybatis的session是申请一个connection,基于connection的一次会话操作(或是占用)
翻看代码,首先SqlSession是mybatis的类,不是jdbc的类,SqlSession的操作基本都是基于java.sql.Connection的API的操作。openSession和closeSession,可以理解是一个打标的操作并开启或关闭ResultSet等,在连接池中获取链接和归还链接。
SqlSession:

SqlSession.close

关闭ResultSet:

Mybatis的一个Session上可以多个Transaction,也可以没有Transaction,一个Transaction不能跨Session。
事务是基于数据库的事务实现,要符合ACID

本文探讨了MyBatis框架中的Connection与Session概念,揭示了它们与Oracle数据库session之间的对应关系。通过分析MyBatis源码,解释了SqlSession如何基于Connection进行会话操作,并讨论了事务管理机制。

1086

被折叠的 条评论
为什么被折叠?



