【转载】关于SqlSessionFactoryBuilder SqlSessionFactory SqlSession的作用范围

1 SqlSessionFactoryBuilder:这个类可以被实例化,使用和丢弃。一旦你创建了SqlSessionFactory后,这个类就不需要存在了。因此SqlSessionFactoryBuilder实例的最佳范围是方法范围(也就是本地方法变量)。你可以重用SqlSessionFactoryBuilder来创建多个SqlSessionFactory实例,但是最好的方式是不需要保持它一直存在来保证所有XML解析资源,因为还有更重要的事情要做。
2
3 SqlSessionFactory:一旦被创建,SqlSessionFactory应该在你的应用执行期间都存在。没有理由来处理或重新创建它。使用SqlSessionFactory的最佳实践是在应用运行期间不要重复创建多次。这样的操作将被视为是非常糟糕的。因此SqlSessionFactory的最佳范围是应用范围。有很多方法可以做到,最简单的就是使用单例模式或者静态单例模式。然而这两种方法都不认为是最佳实践。这样的话,你可以考虑依赖注入容器,比如Google Guice或Spring。这样的框架允许你创建支持程序来管理单例SqlSessionFactory的生命周期。
4
5 SqlSession:每个线程都应该有它自己的SqlSession实例。SqlSession的实例不能被共享,也是线程不安全的。因此最佳的范围是请求或方法范围。绝对不能将SqlSession实例的引用放在一个类的静态字段甚至是实例字段中。也绝不能将SqlSession实例的引用放在任何类型的管理范围中,比如Serlvet架构中的HttpSession。如果你现在正用任意的Web框架,要考虑SqlSession放在一个和HTTP请求对象相似的范围内。换句话说,基于收到的HTTP请求,你可以打开了一个SqlSession,然后返回响应,就可以关闭它了。关闭Session很重要,你应该确保使用finally块来关闭它。
时间: 2024-10-21 01:02:32

【转载】关于SqlSessionFactoryBuilder SqlSessionFactory SqlSession的作用范围的相关文章

MyBatis入门——核心对象的生命周期(SqlSessionFactoryBuilder,SqlSessionFactory, SqlSession和Mapper)

二.核心对象的生命周期 从上一篇文章中,我们可以看出mybatis操作数据库主要使用了4个核心对象:SqlSessionFactoryBuilder,SqlSessionFactory, SqlSession和Mapper.那么,在软件系统中,这个几个对象的生命周期是什么样的呢?什么时候创建?什么时候销毁? 1. SqlSessionFactoryBuilder SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder(

mybatis框架源码学习

转:来自https://my.oschina.net/u/1458864/blog/293659 摘要:初始化mybatis,所有的配置都在configuation 对象中使用mybatis,从sqlsessionfactory 工厂中获取sqlsession,从configuation对象中获取mapper对象,并返回结果,mybatis在加载mapper的时候对mapper接口的注解进行解析,重要的几个包:io,session,builder,mapper(annotations,bindi

mybatis大框架

MyBatis   开源的数据持久化层框架 实体类与SQL语句之间建立映射关系 一:MyBatis前身是IBatis,本是Apache的一个开源的项目, 基于SQL语法,简单易学 ,是耦合度降低,方便程序调式 二:搭建Mybatis的开发步骤: a:下载mybatis-3.3.3.jar包并导入工程 b.编写MyBatis核心配置文件(configuration.xml) c.创建实体类-POJO d.DAO层-SQL映射文件(mapper.xml) e.创建测试类 读取全局配置文件mybati

由“单独搭建Mybatis”到“Mybatis与Spring的整合/集成”

在J2EE领域,Hibernate与Mybatis是大家常用的持久层框架,它们各有特点,在持久层框架中处于领导地位. 本文主要介绍Mybatis(对于较小型的系统,特别是报表较多的系统,个人偏向Mybatis),对于它,个人比较喜欢的是: 使用简单.方便: 支持的XML动态SQL的编写,方便浏览.修改,同时降低SQL与应用程序之间的耦合. 不喜欢的是: 出现错误时,调试不太方便 本文主要介绍Mybatis的搭建,是学习Mybatis过程后整理的札记,其中包括“单独搭建Mybaits”和常用的“M

MyBatis简单使用和入门理解

本文记录第一次使用Mybatis时碰到的一些错误和简单理解,采用的示例是Eclipse中的JAVA工程,采用XML文件定义数据库连接. 可以使用Java JDBC API直接操作数据库,但使用框架会更便捷.高效而且还可以利用框架提供的某些强大的功能(比如事务管理),而Mybatis就是这样的一个框架. Mybatis主要由四大部分组成: ①SqlSessionFactoryBuilder ②SqlSessionFactory ③SqlSession ④SQL Mapper 要想访问(操作)数据库

MyBatis使用注意事项

目录 1. 使用何种映射器配置 2. 对象生命周期和作用域 SqlSessionFactoryBuilder SqlSessionFactory SqlSession 映射器实例(Mapper Instances) 1. 使用何种映射器配置 MyBatis 3之后的SQL语句映射既支持注解也支持XML配置,他们各有优势和缺点,在实例项目中应该如何选择可以参考如下建议: 对于简单语句来说,注解使代码显得更加简洁,然而Java注解对于稍微复杂的语句就会力不从心并且会显得更加混乱.因此,如果你需要做很

SpringBoot整合Mybatis之Annotation

首先需要下载前面一篇文章的代码,在前一章代码上进行修改. SpringBoot整合Mybatis(注解方式) 复制前一个项目,修改配置文件,mybatis的相关配置为: mybatis: type-aliases-package: con.mybatis.springboot_mybatis.model configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdO

Mybaties-基础知识

1.基础知识SqlSessionFactoryBuilder /SqlSessionFactory /SqlSession /SQL Mapper SqlSessionFactoryBuilder:读取配置信息创建SqlSessionFactory,建造者模式,方法级别生命周期: SqlSessionFactory:创建Sqlsession,工厂单例模式,存在于程序的整个生命周期: SqlSession:(线程不安全的)代表一次数据库连接,可以直接发送SQL执行,也可以通过调用Mapper访问数

mybatis-SqlSession

1. 概述 在前面,我们已经详细解析了 MyBatis 执行器 Executor 相关的内容,但是显然,Executor 是不适合直接暴露给用户使用的,而是需要通过 SqlSession . 流程如下图: 示例代码如下: // 仅仅是示例哈 // 构建 SqlSessionFactory 对象Reader reader = Resources.getResourceAsReader("org/apache/ibatis/autoconstructor/mybatis-config.xml&quo