SqlSession与SqlSessionFactory
2.2.3 SqlSession
SqlSession是MyBatis框架中极其重要的接口。SqlSession类似于JDBC中的Connection,它代表MyBatis和数据库的一次会话,主要用于执行持久化操作。SqlSession对象底层封装了JDBC连接,所以可以直接使用SqlSession对象执行已映射的SQL语句。SqlSession中包含了所有执行SQL语句的方法、提交或回滚事务的方法、获取映射器实例的方法。SqlSession不是线程安全的,每个线程都应有一个属于自己的SqlSession实例并且该实例不能够被共享。在使用SqlSession执行相关操作后应将其关闭,释放资源。
2.2.2 SqlSessionFactory
我们单从字面意思就可大概揣测出SqlSessionFactory接口的用途在于创建SqlSession。
SqlSessionFactory是单个数据库映射关系经过编译后的内存镜像,其核心作用就是创建SqlSession。SqlSessionFactory 一旦被创建就应伴随应用程序的运行而长期一直存在,我们没有任何理由对它进行清除或重建,多次重建 SqlSessionFactory 被视为一种代码“坏味道(bad smell)”。为避免资源的浪费和过度开销,在项目中最好使用单例模式创建和获取SqlSessionFactory。
SqlSessionFactory使用openSession( )方法创建SqlSession实例。使用openSession( )重载之后共有8个方法,代码如下:
SqlSession openSession();
SqlSession openSession(boolean autoCommit);
SqlSession openSession(Connection connection);
SqlSession openSession(TransactionIsolationLevel level);
SqlSession openSession(ExecutorType execType);
SqlSession openSession(ExecutorType execType, boolean autoCommit);
SqlSession openSession(ExecutorType execType, TransactionIsolationLevel level);
SqlSession openSession(ExecutorType execType, Connection connection);
在以上方法中我们使用最多的是第2个。利用该方法获得的SqlSession实例可帮助我们自动提交事务。也就是说,在该方式下执行insert、update、delete操作后不需执行commit( )提交事务亦可自动生效。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?