`

Mybatis的SqlSessionFactory、SqlSession

阅读更多

SqlSessionFactory

一旦被创建,SqlSessionFactory实例应该在你的应用程序执行期间都存在。没有理由来处理或重新创建它。使用SqlSessionFactory的最佳实践是在应用程序运行期间不要重复创建多次。这样的操作将被视为是非常糟糕的。因此SqlSessionFactory的最佳范围是应用范围。有很多方法可以做到,最简单的就是使用单例模式或者静态单例模式。然而这两种方法都不认为是最佳实践。这样的话,你可以考虑依赖注入容器,比如Google Guice或Spring。这样的框架允许你创建支持程序来管理单例SqlSessionFactory的生命周期。

 

SqlSession

每个线程都应该有它自己的SqlSession实例。SqlSession的实例不能共享使用,它也是线程不安全的。因此最佳的范围是请求或方法范围。绝对不能将SqlSession实例的引用放在一个类的静态字段甚至是实例字段中。也绝不能将SqlSession实例的引用放在任何类型的管理范围中,比如Serlvet架构中的HttpSession。如果你现在正用任意的Web框架,要考虑SqlSession放在一个和HTTP请求对象相似的范围内。换句话说,基于收到的HTTP请求,你可以打开了一个SqlSession,然后返回响应,就可以关闭它了。关闭Session很重要,你应该确保使用finally块来关闭它。下面的示例就是一个确保SqlSession关闭的基本模式:

SqlSession session = sqlSessionFactory.openSession();

try {

// do work

} finally {

session.close();

}

在你的代码中一贯地使用这种模式,将会保证所有数据库资源都正确地关闭(假设你没有通过你自己的连接关闭,这会给MyBatis造成一种迹象表明你要自己管理连接资源)。

分享到:
评论

相关推荐

    新MyBatis教程高手带你练手,玩框架轻松(3.15G)

    MyBatis-013-SqlSessionFactory和SqlSession对象介绍.avi MyBatis-014-工具类使用.avi MyBatis-015-传统dao使用方式.avi MyBatis-016-传统dao执行insert.avi MyBatis-017-传统dao的执行分析.avi MyBatis-018-使用...

    MyBatis执行SQL并将结果映射成Java对象.docx

    3. 通过SqlSessionFactory 可以创建SqlSession 即会话 MyBatis是通过SqlSession来操作数据库 4. SqlSession本身不能直接操作数据库 它是通过底层的Executor执行器接口来操作数据库 Executor接口有两个实现类 一个是...

    mybatis-3-mybatis-3.5.13.zip

    1. 核心模块: MyBatis的核心源码位于org.apache.ibatis包下,其中最重要的类是SqlSessionFactory和SqlSession。SqlSessionFactory负责创建SqlSession,而SqlSession用于执行SQL语句并管理数据库连接。 2. 配置解析...

    MyBatis-3-User-Guide用户手册(中文英文)

    从 SqlSessionFactory 中获取 SqlSession\ 6 探究已映射的 SQL语句 \ 7 命名空间的一点注释 \ 8 范围和生命周期 \ 8 SqlSessionFactoryBuilder \ 8 SqlSessionFactory\ 9 SqlSession \ 9 映射器实例 \ 9 XML...

    深入剖析MyBatis SQL执行流程:从配置到查询结果的全程追踪

    本文深入分析了MyBatis执行SQL的整个流程,从SqlSessionFactory的创建到SQL语句的执行,揭示了MyBatis工作的内部机制。首先,通过SqlSessionFactoryBuilder,MyBatis解析配置文件生成Configuration对象,并创建...

    mybatis-xml.zip

    基本的xml配置mybatis,以及将分装重复的SqlSessionFactoryBuilder和SqlSessionFactory以及SqlSession,有详细的注释。

    springmybatis

    SqlSession session = sqlSessionFactory.openSession(); try { User user = (User) session.selectOne("com.yihaomen.mybatis.models.UserMapper.selectUserByID", 1); System.out.println(user.getUserAddress...

    MyBatis3_用户指南(附JavaDB实例)

    从SqlSessionFactory 获取SqlSession....7 探索映射SQL语句....... 8 关于命名空间...9 作用域和生命周期..... 10 Mapper XML配置....11 properties元素12 Settings元素....13 typeAliases元素...... 14 ...

    mybatis学习资料

    mybatis官方资料文档,文字版说明,包含代码示例,目录信息如下: * 安装 * 从 XML 中构建 SqlSessionFactory ...* 从 SqlSessionFactory 中获取 SqlSession * 探究已映射的 SQL 语句 * 作用域(Scope)和生命周期

    mybatis-config.xml

    Spring  Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。...在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。

    SSM框架的学习与应用JavaEE(第二天)Mybatis的深入学习

    通过对MyBatis的深入学习,包括MyBatis核心对象、配置文件、映射文件的使用。 文章具体介绍了: ...SqlSession和SqlSessionFactory创建示例 用户别名配置示例 JUnit与Mockito结合测试示例 工具类MyBatisUtil代码示例

    自己整理的Mybatis必须掌握的知识。从原生方式的使用再到常用的Mapper文件的使用解析,共48页

    6.2 sqlSessionFactory 6.3 SqlSession 七、 对象入参 八、 Mybatis核心配置文件 8.1 8.2 8.3 8.4 8.5 8.6 九、 SQL映射文件 9.1 根标签 9.2 9.3 9.4 十、动态SQL 十一、逆向工程 十二、关联查询

    深入探索MyBatis:全局配置文件解析及应用优化策略

    MyBatis通过XMLConfigBuilder类解析配置文件,创建SqlSessionFactory,进而生成SqlSession,实现对数据库的操作。关键的配置元素如environments定义了数据库连接及事务管理,而mappers则指定了SQL映射文件的位置。...

    day01_eesy_03mybatis_dao.zip

    第二步:创建SqlSessionFactory工厂 第三步:创建SqlSession 第四步:创建Dao接口的代理对象 第五步:执行dao中的方法 第六步:释放资源 注意事项: 不要忘记在映射配置中告知mybatis要封装到哪个实体类中 ...

    纯原生mybatis框架实现增删改查【源码+数据库】

    纯原生mybatis框架实现增删改查 使用mybatis最底层的api,包括SqlSessionFactory,SqlSessionFactoryBuilder,SqlSession来实现mybatis的增删改查功能

    mybatis结合redis的配置文件及工具类

    jedis工具类、序列化和反序列化工具类、自定义工具类获取SqlSessionFactory、mybatis-config.xml、log4j.properties、redis.properties

    mybatis-SourceCode:MyBatis原始码学习

    奇淫巧技ctrl + H,查看类的子类ctrl + alt + u,或者右击选择MyBatis原始码解析SqlSessionFactoryBuilder(类):构造SqlSessionFactory实例使用阅读器/ InputStream /属性/配置等构造SqlSessionFactory(接口):...

    datasource:持久层

    ①JDK8 ②Java直接整合MyBatis在Java中直接使用MyBatis框架需要读取配置,手动构造SqlSessionFactory / SqlSession ③Spring整合MyBatis(传统写法)事务 ss_mybatis ①JDK6 ②Spring/ SpringMVC整合原生MyBatis...

Global site tag (gtag.js) - Google Analytics