mybatis学习笔记
2016-06-16 21:13
302 查看
一、SqlSessionFactoryBuilder
这个类可以被实例化、使用和丢弃,一旦创建了 SqlSessionFactory,就不再需要它了。因此 SqlSessionFactoryBuilder 实例的最佳范围是方法范围(也就是局部方法变量)。你可以重用 SqlSessionFactoryBuilder 来创建多个 SqlSessionFactory 实例,但是最好还是不要让其一直存在以保证所有的 XML 解析资源开放给更重要的事情。二、SqlSessionFactory
SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,没有任何理由对它进行清除或重建。使用 SqlSessionFactory 的最佳实践是在应用运行期间不要重复创建多次,多次重建 SqlSessionFactory 被视为一种代码“坏味道(bad smell)”。因此 SqlSessionFactory 的最佳范围是应用范围。有很多方法可以做到,最简单的就是使用单例模式或者静态单例模式。三、SqlSession
每个线程都应该有它自己的 SqlSession 实例。SqlSession 的实例不是线程安全的,因此是不能被共享的,所以它的最佳的范围是请求或方法范围。绝对不能将 SqlSession 实例的引用放在一个类的静态域,甚至一个类的实例变量也不行。也绝不能将 SqlSession 实例的引用放在任何类型的管理范围中,比如 Serlvet 架构中的 HttpSession。如果你现在正在使用一种 Web 框架,要考虑 SqlSession 放在一个和 HTTP 请求对象相似的范围中。换句话说,每次收到的 HTTP请求,就可以打开一个 SqlSession,返回一个响应,就关闭它。这个关闭操作是很重要的,你应该把这个关闭操作放到 finally 块中以确保每次都能执行关闭。下面的示例就是一个确保 SqlSession 关闭的标准模式:
SqlSession session = sqlSessionFactory.openSession(); try { // do work } finally { session.close(); }
相关文章推荐
- 1001
- 自学java第三天学习成员变量与局部变量
- MyBatis分页插件
- MyBatis分页插件--有测试代码哦,可以抄袭哦
- ArchLinux下Shell基础学习
- 6A - Triangle
- 修改system目录权限
- 数据处理工具pandas
- shell脚本中反引号与双引号的·区别与联系
- 静态成员变量和静态成员函数
- Combination Sum
- PHP关键词查询和多条件查询
- 数据结构之二叉堆
- jQuery源码学习(三)
- Python学习笔记(运算符)
- 如何设置蓝牙CC2541的数据传输速率?-TI论坛的问答
- ISO网络参考模型分层及每一层功能描述
- 微软Caffe编译
- JSONObject,JSON,和JSONArray
- 理解线程同步