是MyBatis的关键字,它是单个数据库映射关系经过编译后的内存镜像,SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象来获得,而SqlSessionFactoryBuildr则可以从XML配置文件或一个预先定制的Configuration的实例构建出SqlSessionFactory的实例
每一个MyBatis的应用程序都以一个SqlSessionFactory对象的实例为核心。SqlSessionFactory是线程安全的,他一旦被创建,应该在应用执行期间都存在,在应用运行期间不要重复创建多次,建议使用单例模式,SqlSessionFactory是创建SqlSession的工厂。
SqlSessionFactory 是一个重量级组件,线程安全的,一般情况下一个数据库对应一个 SqlSessionFactory 对象,所以一般情况下一个应用仅需要一 个SqlSessionFactory 对象;通过 SqlSessionFactory 生成 SqlSession 对象。
SqlSession
SqlSession 是一个轻量级组件,非线程安全的,该对象通过SqlSessionFactory 对象来获得,SqlSession 对象我们可以看成一个数据库连接对象。该对象中封装了大量操作数据库的方法;由于 SqlSession 是非线程安全的,每次使用时要获得一个 SqlSession 对象,使用结束后关闭该对象;
SqlSession是MyBatis的关键对象,是执行持久化操作的对象,类似于JDBC中的Connection。
它是应用程序与持久存储层之间执行交互操作的一个单线程对象,也是MyBatis执行持久化操作的关键对象。SqlSession对象完全包含以数据库为背景的所有执行SQL操作的方法,它的底层封装了JDBC连接,可以用SqlSession实例来直接执行已映射的SQL语句。每个线程都应该有它自己的SqlSession实例。SqlSession的实例不能被共享,也是线程不安全的,绝对不能将SqlSession 实例的引用放在一个类的静态字段甚至是实例字段中。也绝不能将SqlSession实例的引用放在任何类型的管理范围中,比如Serlvet当中的HttpSession 对象中。使用完SqlSession之后关闭Session很重要,应该确保使用finally块来关闭它。
多线程SqlSession入库数据丢失
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
下一篇:opencv不同版本的下载地址
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
SqlSession怎么给多线程用 sqlsession如何保证线程安全
现象1:如果使用原生mybatis进行数据操作,那么必须按照以下方式使用: SqlSession sqlSession = null ;try { sqlSession =
SqlSession怎么给多线程用 mybatis sql spring java -
java 多线程入库不写入数据 java多线程深入
目录前言一、什么是多线程?二、多线程的快速入门三、多线程的三种创建方式 1.继承Tread类 2.实现Runnable接口 &
java 多线程入库不写入数据 java 多线程 System Test