一.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 生命周期的更多相关文章

  1. Java 笔记——MyBatis 生命周期

    1.MyBatis 的生命周期 MyBatis的核心组件分为4个部分. SqlSessionFactoryBuilder (构造器): 它会根据配置或者代码来生成SqISessionFactory,采 ...

  2. MyBatis中主要类的生命周期和应用范围

    转自:http://ccchhhlll1988-163-com.iteye.com/blog/1420026 MyBatis中常用的类就要数SqlSessionFactoryBuilder.SqlSe ...

  3. MyBatis之八:需要说明的几个java api的生命周期以及封装

    学习mybatis不得不了解SqlSessionFactoryBuilder.SqlSessionFactory.SqlSession.这里主要是讲解它们的生命周期以及一般最佳实践. 一般来说对象的生 ...

  4. MyBatis源码解析【3】生命周期

    经过之前的项目构建,我们已经得到了一个可以使用的最基本的项目. 其中已经包括整个执行的过程.但是我们在完成之后也遇到了很多问题,我们就要慢慢的一步步解决这些问题. 讲道理,今天我们其实应该直接开始看源 ...

  5. MyBatis 作用域(Scope)和生命周期

    SqlSessionFactoryBuilder SqlSessionFactoryBuilder的作用是创建SqlSessionFactory.一旦创建了SqlSessionFactory,就不再需 ...

  6. MyBatis的生命周期

    MyBatis的生命周期 所谓的生命周期就是第一个对象应该存活的时间,比如一些对象一次用完后就要关闭,使它们被Java虚拟机(JVM)销毁,以避免继续占用资源,所以我们会根据每一个组件的作用去确定其生 ...

  7. MyBatis 作用域和生命周期

    理解到目前为止所讨论的类的作用域和生命周期是非常重要的.如果使用不当可导致严重的并发性问题. SqlSessionFactoryBuilder  这个类可以在任何时候被实例化.使用和销毁.一旦您创造了 ...

  8. 【Mybatis】Mybatis元素生命周期

    一.SqlSessionFactoryBuilder SqlSessionFactoryBuilder是利用XML或者Java编码获得资源来构建SqlSessionFactory的,通过它可以构建多个 ...

  9. MyBatis的适用场景和生命周期

    MyBatis使用场景 对比Hibernate和MyBatis是我们常见的话题,Hibernate作为常用的ORM框架,它使用起来简单易懂,对于SQL语言的封装,让对于SQL并不是很熟练的程序员也可以 ...

随机推荐

  1. Incjector

    网上的注入工具很多,大多也有比较详细的解释,但是大部分windows下的注入软件都是对自己软件的一种推荐,而且很多也不是非常的安全,对于有些破解版本来说,很可能自身会被带有木马,所以,Linux下的注 ...

  2. JWT(JSON Web Token) 【转载】

    JWT(JSON Web Token) 什么叫JWTJSON Web Token(JWT)是目前最流行的跨域身份验证解决方案. 一般来说,互联网用户认证是这样子的. 1.用户向服务器发送用户名和密码. ...

  3. 【备份】如何在 PADS Layout 中选择 Gerber 274X 格式

    如何在 PADS Layout 中选择 Gerber 274X 格式. 起初原因是 JLC 说 274X 和 274D 的差别. 有小伙伴使用了 274D 的格式,结果做出来的 PCB 有问题.

  4. git 与 ftp 共同工作

    因git主要用于版本管理,代码同步方面,因临时调试等原因,需要使用ftp上传文件. 但因为git的账户为ubuntu,ftp是虚拟账户overlord 导致文件权限不同,出现的问题主要有: 1.ftp ...

  5. 18.22 sprintf函数功能

    函数功能:把格式化的数据写入某个字符串 函数原型:int sprintf( char *buffer, const char *format [, argument] … ); 返回值:字符串长度(s ...

  6. Skin Microstructure Deformation with Displacement Map Convolution项目小结

    经常有人问我你最近在干什么,但一句话真的很难说明白,最近两个月一直在尝试将Skin Microstructure Deformation with Displacement Map Convoluti ...

  7. 【Leetcode】无重复字符的最长子串

    暴力解法,枚举所有子字符串组合 输入:长度[0,n]的字符串 耗时过长--- class Solution { public: int lengthOfLongestSubstring(string ...

  8. Android Studio 问题

    1.问题:android studio 安装 apk 闪退 方法: Build → Clean Project 一下再安装 2.问题:Gradle failed: already disposed m ...

  9. c#委托之浅析

    前言: 这章我们将弄懂,委托是什么?有什么作用?在什么样的场景下可以启到什么作用? 委托适用的场景:当确定处理一个任务时,不确定其处理任务的方法时可使用,这样可以提高扩展性,调用符合条件的处理方法,避 ...

  10. [UE4]计算箭头方向:正切、SetRelativeRotation、RotationFromXVector、Get MotionController Thumbstick X

    正切 正弦函数 sinθ=y/r 余弦函数 cosθ=x/r 正切函数 tanθ=y/x 余切函数 cotθ=x/y 正割函数 secθ=r/x 余割函数 cscθ=r/y   已知y和x,求角度θ: ...