MyBatis 生命周期
一.SqlSessionFactoryBuilder
SqlSessionFactoryBuilder是利用XML或是Java编码获得资源来构建SqlSessionFactory的,通过他可以构建多个SessionFactory.他的作用就是构建器,一旦我们构建了SqlSessionFactory,他的作用就已经完结,就没有什么意义了我们就可以去回收了他,所以他的生命周期就是存在于方法的局部,他的作用就是就用来我们产生SqlSessionFactory;
二.SqlSessionFactory
SqlSessionFactory他的作用就是创建SqlSession,而SqlSession就是一个会话,相当于JDBC当中的Connection对象.每次访问数据库我们就是通过SqlSessionFactory来创建一个SqlSession,所以SqlSessionFactory应该是在整个应用的生命周期的,而如果我们多次创建同一个SqlSessionFactory,则每次创建SqlSessionFactory会打开更多的数据库连接资源,那么连接资源很快就会被耗尽.因此这里我们的SqlSessionFactory的责任是唯一的,他的责任就是创建SqlSession,所以在这里我们采用单例模式.所以如果是有多个数据库,那么最好的作法就是一个数据库只对应一个SqlSessionFactory;
三.SqlSession
SqlSession是一个会话,相当于JDBC当中的Connection对象.他的生命周期是请求数据库处理事务过程中.他是一个线程不安全的对象,需要特别的当心,操作数据库需要注意他其隔离级别,数据库锁等高级特性.此外在每次创建SqlSession都必须及时关闭,他如果长期存在就会使得数据库连接池活动资源减少,对系统的性能影响很大,所以在我们使用时需要添加一个finally{}并且在这里判断并关闭.他存活于一个应用请求和操作,可以执行多条SQL,保证事务的一至性.
四.Mapper
Mapper是一个接口,而没有任何的实现类,他的作用就是发送SQL,然后返回我们需要的结果,或者是执行SQL从而修改数据库数据,因此他应该是在一个SqlSession事务方法之中,是一个方法级别的东西.他就像JDBC当上的一条SQL语句的执行,他的最大范围和SqlSession是相同的,
MyBatis 生命周期的更多相关文章
- Java 笔记——MyBatis 生命周期
1.MyBatis 的生命周期 MyBatis的核心组件分为4个部分. SqlSessionFactoryBuilder (构造器): 它会根据配置或者代码来生成SqISessionFactory,采 ...
- MyBatis中主要类的生命周期和应用范围
转自:http://ccchhhlll1988-163-com.iteye.com/blog/1420026 MyBatis中常用的类就要数SqlSessionFactoryBuilder.SqlSe ...
- MyBatis之八:需要说明的几个java api的生命周期以及封装
学习mybatis不得不了解SqlSessionFactoryBuilder.SqlSessionFactory.SqlSession.这里主要是讲解它们的生命周期以及一般最佳实践. 一般来说对象的生 ...
- MyBatis源码解析【3】生命周期
经过之前的项目构建,我们已经得到了一个可以使用的最基本的项目. 其中已经包括整个执行的过程.但是我们在完成之后也遇到了很多问题,我们就要慢慢的一步步解决这些问题. 讲道理,今天我们其实应该直接开始看源 ...
- MyBatis 作用域(Scope)和生命周期
SqlSessionFactoryBuilder SqlSessionFactoryBuilder的作用是创建SqlSessionFactory.一旦创建了SqlSessionFactory,就不再需 ...
- MyBatis的生命周期
MyBatis的生命周期 所谓的生命周期就是第一个对象应该存活的时间,比如一些对象一次用完后就要关闭,使它们被Java虚拟机(JVM)销毁,以避免继续占用资源,所以我们会根据每一个组件的作用去确定其生 ...
- MyBatis 作用域和生命周期
理解到目前为止所讨论的类的作用域和生命周期是非常重要的.如果使用不当可导致严重的并发性问题. SqlSessionFactoryBuilder 这个类可以在任何时候被实例化.使用和销毁.一旦您创造了 ...
- 【Mybatis】Mybatis元素生命周期
一.SqlSessionFactoryBuilder SqlSessionFactoryBuilder是利用XML或者Java编码获得资源来构建SqlSessionFactory的,通过它可以构建多个 ...
- MyBatis的适用场景和生命周期
MyBatis使用场景 对比Hibernate和MyBatis是我们常见的话题,Hibernate作为常用的ORM框架,它使用起来简单易懂,对于SQL语言的封装,让对于SQL并不是很熟练的程序员也可以 ...
随机推荐
- 《python for data analysis》第五章,pandas的基本使用
<利用python进行数据分析>一书的第五章源码与读书笔记 直接上代码 # -*- coding:utf-8 -*-# <python for data analysis>第五 ...
- 03机器学习实战之决策树CART算法
CART生成 CART假设决策树是二叉树,内部结点特征的取值为“是”和“否”,左分支是取值为“是”的分支,右分支是取值为“否”的分支.这样的决策树等价于递归地二分每个特征,将输入空间即特征空间划分为有 ...
- Java...点点点语法
https://blog.csdn.net/IT_faquir/article/details/49131173
- 百度UEditor的config.json
配合自己修改的.net core DLL使用 /* 前后端通信相关的配置,注释只允许使用多行方式 */ { /* 上传图片配置项 */ "imageActionName": &qu ...
- 搞懂iobuffer就得先学习bytebuffer
ByteBuffer前前后后看过好几次了,实际使用也用了一些,总觉得条理不够清晰. <程序员的思维修炼>一本书讲过,主动学习,要比单纯看资料效果来的好,所以干脆写个详细点的文章来记录一下. ...
- 单例模式实例&多线程应用
单例模式是指:对于一个类在内存中只能存在唯一一个对象,这种设计模式叫做单例设计模式. 单例设计模式的写法: 1. 设置私有(private)的构造方法. 2. 实例化一个该类的对象作为成员变量,并设置 ...
- C语言volatile关键字的用法
volatile关键字的意义在于让被关键字修饰的变量每次使用时都重新去主内存里读取变量,而不是从高速缓存去读取. int a = 1; 普通变量定义之后,若要使用它,都会 先把它的值从主内存拷贝到高速 ...
- note 6 函数
函数 完成特定功能的一个语句组,这组语句可以作为一个单位使用,并且给它取一个名字 通过函数名执行 数学 function(x) = x^2 - 2x + 1 abs(x) #求x的绝对值 定义函数 定 ...
- 3阶马尔可夫链 自然语言处理python
一.简介: 把每三个三个单词作为一个整体进行训练. 举一个例子: input: my dream is that I can be an engineer, so I desi ...
- 解决WCF“接收对 http://xxx.svc 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致"
最近在工作中新加了一个接口,本地调试的时候,直接抛出“接收对 http://xxx.svc 的 HTTP 响应时发生错误.这可能是由于服务终结点绑定未使用 HTTP 协议造成的.这还可能是由于服务器中 ...