这几天翻了一下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