`

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造成一种迹象表明你要自己管理连接资源)。

分享到:
评论

相关推荐

    SpringBoot+MyBatis+SqlSession

    开发者可以通过SqlSessionFactory创建SqlSession实例,然后通过SqlSession执行Mapper中的SQL语句。 在SpringBoot项目中集成MyBatis,我们首先需要在pom.xml文件中添加MyBatis和SpringBoot的MyBatis Starter依赖。...

    Spring3 整合MyBatis3 配置多数据源动态选择SqlSessionFactory详细教程

    Spring3 整合 MyBatis3 配置多数据源动态选择 SqlSessionFactory 详细教程 本教程主要介绍了 Spring3 整合 MyBatis3 配置多数据源动态选择 SqlSessionFactory 的详细教程。下面将详细介绍如何实现 Spring 整合 ...

    Mybatis中SqlSession下的四大对象之执行器(executor)

    Executor的初始化过程通常在SqlSessionFactory创建SqlSession时完成。在`Configuration`类中,Mybatis会根据配置信息创建对应的Executor实例。Executor的创建过程涉及到了Mybatis的IoC(Inversion of Control,控制...

    Mybatis中执行String类型的自己拼写的sql,不执行配置文件中的sql

    这里,`sqlSessionFactory`是MyBatis的会话工厂,`params`可以是用于占位符替换的参数对象。使用这种方式,我们可以在代码中动态构建和执行SQL。 执行自定义SQL而不是XML配置文件中的SQL有以下优点: 1. 动态性:在...

    mybatis中的sqlsession--executor实现.zip

    `SqlSession`的创建通常是通过`SqlSessionFactory`获取的,这个工厂类负责创建线程安全的`SqlSession`实例。`SqlSession`的主要职责包括: 1. **执行映射的SQL语句**:根据Mapper接口的方法或XML配置文件中的SQL...

    springMybatis1.7z

    - **配置MyBatis-Spring桥接器**:引入mybatis-spring库,它提供了将MyBatis的SqlSession与Spring的IoC容器集成的组件。 5. **使用注解进行配置** 除了XML配置外,Spring与MyBatis还可以通过注解进行整合,例如在...

    SqlSession 创建过程.pdf

    在深入了解MyBatis框架中SqlSession对象的创建过程之前,首先要明确SqlSession在MyBatis中的作用。SqlSession是MyBatis中的核心接口之一,它代表与数据库交互的一次会话,用于执行已经映射的SQL语句。创建SqlSession...

    spring+mybatis链接包

    3. **SqlSessionFactory**:它是MyBatis的核心,用于创建SqlSession对象,SqlSession是执行SQL和获取结果的入口。 4. **Mapper接口和XML映射文件**:MyBatis允许定义Mapper接口,每个方法对应一个SQL查询,XML映射...

    mybatis-spring-1.1.1-bundle

    MyBatis-Spring是MyBatis和Spring之间的粘合剂,它提供了将MyBatis的SqlSession和Mapper接口透明地注入到Spring Bean中的能力。这使得开发者可以利用Spring的事务管理和其他服务,同时享受MyBatis的SQL映射灵活性。 ...

    spring+springMVC+mybatis jar包

    首先,Spring作为基础框架,管理所有组件的生命周期,包括SpringMVC的Controller和MyBatis的SqlSession。然后,SpringMVC负责处理HTTP请求,通过Spring的依赖注入将业务逻辑层(Service)注入到Controller中。...

    mybatis核心jar包+mybatis与spring整合jar包

    SqlSessionFactory则负责创建SqlSession对象,SqlSession是MyBatis操作数据库的入口,通过它可以执行SQL语句。而Mapper接口则定义了数据库操作的方法,实现了数据访问层与业务逻辑层的分离。 在MyBatis与Spring的...

    MyBatis+Struts2+Spring 增删改查

    Struts2作为前端控制器,接收HTTP请求并转发到相应的Action处理,Action再通过Spring管理的MyBatis SqlSessionFactory创建SqlSession,执行SQL语句,完成对数据库的操作。MyBatis通过XML配置文件或注解定义SQL语句,...

    mybatis学习入门一、mybatis+servlet实现数据显示

    1. **SqlSessionFactory**: 这是MyBatis的启动点,用于创建SqlSession对象,它是操作数据库的接口。 2. **SqlSession**: 通过SqlSessionFactory获取,是与数据库交互的接口,用于执行SQL语句。 3. **Mapper**: 定义...

    web6_mybatis.rar

    3. MyBatis SqlSessionFactory 和 SqlSession:SqlSessionFactory负责创建SqlSession对象,SqlSession是执行数据库操作的入口,提供了增删查改的方法。 4. MyBatis的注解:除了XML配置外,MyBatis还支持在Java类和...

    基于MyBatis3.2的一个Demo,供新手参考

    3. **SqlSession和SqlSessionFactory**:SqlSession是MyBatis中执行SQL和获取结果的对象,而SqlSessionFactory则是创建SqlSession的工厂。在初始化时,MyBatis会根据配置文件创建SqlSessionFactory,然后每次需要...

    新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 中文官方文档

    首先,MyBatis 的核心组件包括SqlSessionFactory和SqlSession。SqlSessionFactory是创建SqlSession的工厂,而SqlSession则是与数据库进行交互的主要接口。在应用启动时,我们通常会创建一个SqlSessionFactory实例,...

    mybatis-spring-chinese.rar_Spring + MyBatis_mybatis_mybatis spri

    当这两个框架结合时,Spring可以自动管理MyBatis的数据源、SqlSessionFactory和SqlSession,让开发者更专注于业务逻辑,而非底层的数据库操作。 首先,集成MyBatis到Spring的步骤包括: 1. **配置数据源**:在...

    spring + mybatis Jar

    这种整合可以利用Spring的IoC容器来实现SqlSessionFactory的创建和SqlSession的管理,从而实现更高效的事务管理和资源回收。 压缩包中的文件"aspectjrt+aspectjweaver"是AspectJ的运行时库和织入工具。AspectJ是一...

    mybatis-spring-1.31.jar

    首先,MyBatis-Spring通过自动配置,可以将MyBatis的数据源、SqlSessionFactory和Mapper接口与Spring的bean容器集成。这使得我们可以在Spring配置文件中声明式地管理MyBatis的相关组件,避免了手动创建和管理...

Global site tag (gtag.js) - Google Analytics