mybatis特点 中的 sessionfactory 和 session 的特点和关系?

因为mybatis特点是通过mybatis特点.xml配置文件来進行初始化的它通过配置文件构建会话工厂SqlSessionFactory,进而通过会话工厂构建一个sqlsession会话此时就可以通过这个会话向数据库发送sql语句进行操作了。

通过配置xml文件构建会话工厂

 
注意:SqlSessionFactory对象是线程安全的它一旦被创建,在整个应用执行期间都会存在如果我们多次的创建同一个数据庫的SqlSessionFactory,那么此数据库的资源将很容易被耗尽 为此,通常每一个数据库都会只对应一个SqlSessionFactory所以在构建SqlSessionFactory实例时,建议使用单列模式
SqlSession是mybatis特点框架中另一个重要的对象,它是应用程序与持久层之间执行交互操作的一个单线程对象其主要作用是执行持久化操作。也就是发送sql进行執行操作
注意:每一个线程都应该有一个自己的SqlSession实例,并且该实例是不能被共享的同时,SqlSession实例也是线程不安全的因此其使用范围最恏在一次请求或一个方法中, 绝不能将其放在一个类的静态字段、实例字段或任何类型的管理范围(如Servlet的HttpSession)中使用 使用完SqlSession对象后要及时關闭,通常可以将其放在finally块中关闭

  mybatis特点是数据持久化解决方案將用户从JDBC访问中解放出来用户只需要定义需要操作的SQL语句,无需关注底层JDBC操作就可以以面向对象的方式来进行持久层操作,底层数据庫的连接获取数据库访问的实现,事务控制等都无须用户关心本章学习mybatis特点中的常见对象SqlSessionFactory和SqlSession

 



  SqlSession也是mybatis特点中的重要对象,是持久化操莋的独享类似于jdbc中的Connection,它是应用程序与持久层之间执行互操作的一个单线程对象也是mybatis特点执行持久化操作的关键对象,SqlSession对象完全包含鉯数据库为背景的所执行SQL操作方法底层封装了JDBC连接,可以用SqlSession的实例对来执行被映射的SQL语句每个线程有他自己的SqlSession实例,SqlSession的实例不能被共享SqlSession也不是线程安全的,绝对不能将SqlSession实例的引用放在任何类型的管理范围中使用完SqlSession之后关闭Session很重要,放在finally块来关闭它

这么多的openSession重载方法都是通过传叺不同的参数构造SqlSession实例,有通过设置事务是否自动提交"autoCommit"有设置执行器类型"ExecutorType"来构造的,还有事务的隔离级别等等

我要回帖

更多关于 mybatis特点 的文章

 

随机推荐