Mybatis中sqlSession使用事项
来源:互联网 发布:ubuntu 安装分区建议 编辑:程序博客网 时间:2024/05/21 19:39
一 :SqlSession的使用范围
SqlSession中存储的是编译好的sql语句,这些sql语句是mybatis配置文件读取mapper.xml文件生成的,将sql语句存储到SqlSessionFactory和SqlSession中。封装了对数据库的操作,如:查询、插入、更新、删除等。
通过SqlSessionFactory创建SqlSession,而SqlSessionFactory是通过SqlSessionFactoryBuilder加载配置文件进行创建。在开发中SqlSession在每次使用完都要进行关闭,使用时创建,也就是多例的,线程安全。SqlSessionFactory在整个类中只有一个对象,也就是单例的,单例的线程不安全。
二 :SqlSessionFactoryBuilder
三 : SqlSessionFactory
SqlSessionFactory是一个接口,接口中定义了openSession的不同重载方法,SqlSessionFactory的最佳使用范围是整个应用运行期间,一旦创建后可以重复使用,通常以单例模式管理SqlSessionFactory。
四 : SqlSession
SqlSession是一个面向用户的接口, sqlSession中定义了数据库操作,默认使用DefaultSqlSession实现类。
执行过程如下:
1、 加载数据源等配置信息
Environment environment = configuration.getEnvironment();
2、 创建数据库链接
3、 创建事务对象
4、 创建Executor,SqlSession所有操作都是通过Executor完成,mybatis源码如下:
if (ExecutorType.BATCH == executorType) {
executor = newBatchExecutor(this, transaction);
} elseif (ExecutorType.REUSE == executorType) {
executor = new ReuseExecutor(this, transaction);
} else {
executor = new SimpleExecutor(this, transaction);
}
if (cacheEnabled) {
executor = new CachingExecutor(executor, autoCommit);
}
SqlSession的实现类即DefaultSqlSession,此对象中对操作数据库实质上用的是Executor
结论:
每个线程都应该有它自己的SqlSession实例。SqlSession的实例不能共享使用,它也是线程不安全的。因此最佳的范围是请求或方法范围。绝对不能将SqlSession实例的引用放在一个类的静态字段或实例字段中。
打开一个 SqlSession;使用完毕就要关闭它。通常把这个关闭操作放到 finally 块中以确保每次都能执行关闭。如下:
SqlSession session = sqlSessionFactory.openSession();
try {
// do work
} finally {
session.close();
}
- Mybatis中sqlSession使用事项
- 使用ThreadLocal管理Mybatis中SqlSession对象
- 使用ThreadLocal来存储Session(Hibernate中),SqlSession(Mybatis中)
- Mybatis中如何获取SqlSession
- Mybatis中如何获取SqlSession
- mybatis使用之SqlSession获取
- Mybatis SqlSession
- mybatis sqlsession
- MyBatis sqlSession
- 单一使用Mybatis, SqlSession 注意项
- Mybatis学习(七)mybatis中的SqlSession使用的范围
- MyBatis(二) 使用MyBatis改写及SqlSession
- Mybatis中SqlSession下的四大核心组件分析
- 单纯使用Mybatis框架 如何构建线程安全的SqlSession
- SqlSession的使用范围---Mybatis学习笔记(五)
- SqlSession的使用范围---Mybatis学习笔记(五)
- MyBatis-Spring-SqlSession
- 深入浅出MyBatis-Sqlsession
- 关于浏览器内核
- 5月集训Day3考试
- hadoop安装教程
- 初识Python
- NYOJ58.最少步数(DFS)
- Mybatis中sqlSession使用事项
- android librtmp 推送h264流 aac流 基本过程总结五 推流aac
- 视频花屏分析
- Python的简单语法(上)
- 常见负载均衡算法的简介
- android模拟时分秒记时
- vue2.0开发入门笔记 之 .vue文件
- C# 泛型
- 三色旗问题