zoukankan      html  css  js  c++  java
  • mybatis的两个核心对象SqlSessionFactory和SqlSession对象

    使用MyBatis框架时,主要涉及两个核心对象:SqlSessionFactorySqlSession

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

    SqlSessionFactory是MyBatis框架中十分重要的对象,它是单个数据库映射关系经过编译后的内存镜像,其主要作用是创建SqlSession。SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象来构建,而SqlSessionFactoryBuilder则可以通过XML配置文件或一个预先定义好的Configuration实例构建出SqlSessionFactory的实例。

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

    InputStream inputStream = Resources.getResourceAsStream("配置文件位置");
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);                        

    注意:SqlSessionFactory对象是线程安全的,它一旦被创建,在整个应用执行期间都会存在。如果我们多次的创建同一个数据库的SqlSessionFactory,那么此数据库的资源将很容易被耗尽。 为此,通常每一个数据库都会只对应一个SqlSessionFactory,所以在构建SqlSessionFactory实例时,建议使用单列模式。

    SqlSession是MyBatis框架中另一个重要的对象,它是应用程序与持久层之间执行交互操作的一个单线程对象,其主要作用是执行持久化操作,也就是发送sql进行执行操作。SqlSession对象包含了数据库中所有执行SQL操作的方法,由于其底层封装了JDBC连接,所以可以直接使用其实例来执行已映射的SQL语句。

    注意:每一个线程都应该有一个自己的SqlSession实例,并且该实例是不能被共享的。同时,SqlSession实例也是线程不安全的,因此其使用范围最好在一次请求或一个方法中, 绝不能将其放在一个类的静态字段、实例字段或任何类型的管理范围(如Servlet的HttpSession)中使用。 使用完SqlSession对象后要及时关闭,通常可以将其放在finally块中关闭。

     

    参见:https://www.cnblogs.com/wxdestiny/p/9743686.html


  • 相关阅读:
    python之面向对象
    Python常用模块(logging&re&时间&random&os&sys&shutil&序列化&configparser&&hashlib)
    Python之模块与包
    2.1 、寻找元素 (重要的选择器和筛选器)
    4、循环语句 和 异常处理
    7、其他知识点
    2、函数 面向对象
    3、数据类型
    1、初识JavaScript
    2、css
  • 原文地址:https://www.cnblogs.com/jasonboren/p/10516238.html
Copyright © 2011-2022 走看看