本文介绍: SqlSession 是一个接口,并且里面包含了许多 CRUD 操作数据库等方法。SqlSession 它有三个实现类,分别是 、 和,其中 它的默认实现类。DefaultSqlSession 是线程不安全的 Sqlsession。也就是说 DefaultSqlSession 不能是单例,必须是多例的。 和 是 SqlSession 的代理版,每次新建一个代理对象。姿势都是一样的,但是代理逻辑SqlSessionInterceptor 是不一样的。
三种 SqlSession
SqlSession
是一个接口,并且里面包含了许多 CRUD 操作数据库等方法。
SqlSession
它有三个实现类,分别是 SqlSessionManager
、DefaultSqlSession
和 SqlSessionTemplate
,其中 DefaultSqlSession
它的默认实现类。
DefaultSqlSession 是线程不安全的 Sqlsession 。也就是说 DefaultSqlSession 不能是单例,必须是多例的。
SqlSessionManager
和 SqlSessionTemplate
是 SqlSession 的代理版,每次新建一个代理对象。姿势都是一样的,但是代理逻辑SqlSessionInterceptor 是不一样的。
代理 DefaultSqlSession 实现复用
在执行 getSqlSession 时,两则都是利用 SessionFactory 工厂创建一个 DefaultSqlSession。然后尽可能复用 DefaultSqlSession,而非多例的每次使用都创建一个 DefaultSqlSession。
不同之处在于复用逻辑,先看 SqlSessionTemplate 的:
SqlSessionManager 的代理逻辑
SqlSessionTemplate 的代理逻辑
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。