0 0

关于mybatis的sqlsession如何控制并发?5

目前看mybatis源码时(看的很浅)一个问题一直没搞明白,我这边是主流的spring+mybatis。
问题如下:
每个dao都继承了 SqlSessionDaoSupport,而dao操作数据库的时候是用的父类SqlSessionDaoSupport的sqlSession,这个sqlSession是SqlSessionDaoSupport的一个变量
不明白的地方就在于:在启动tomcat的时候spring已经初始化了dao,由于dao是单例的,我的理解这样sqlSession对象也是同一个,同时,我在页面进行了多次查询发现sqlSession的对象的确是同一个。
大家都说sqlSession是不同的线程是不相同的。这个是怎么回事?并发怎么控制的?那位大侠给解释下。
2013年12月14日 18:07
  • 大小: 42.7 KB

1个答案 按时间排序 按投票排序

0 0

如果Spring与Mybatis集成的话 那么你得到的sqlSession其实是sqlsessiontemplate对象 你可以看看这个类的源码就理解为什么它是线程安全的了。

这个东西就的看源代码 不然用文字描述很难解释的清楚。

2013年12月16日 09:23

相关推荐

    mybatis并发执行时出现NullPointerExce

    在多线程环境中,如果对MyBatis的SqlSession、Mapper接口或者SqlSessionFactory等对象处理不当,就可能出现并发问题,比如`NullPointerException`。 1. **SqlSession的生命周期管理**: - SqlSession是MyBatis中...

    Mybatis资料

    二级缓存是Mapper级别的,可以跨SqlSession共享数据,但需要注意并发控制和数据一致性问题。 在实际项目中,Mybatis常常与Spring框架集成,形成Spring Mybatis,通过Spring的依赖注入和事务管理能力,可以进一步...

    mybatis笔记.zip

    10. **插件扩展**:MyBatis 提供了插件功能,允许用户自定义拦截器来拦截 SqlSession 的方法调用,进行额外的功能添加,如性能监控、日志记录等。 MyBatis 以其简洁、灵活的特性,在 Java 开发中得到了广泛应用。...

    MyBatis面试专题及答案

    第二级缓存是Mapper级别的,跨SqlSession共享,但需要注意并发和数据一致性问题。 6. **MyBatis事务管理** MyBatis支持手动和自动两种事务管理模式。手动模式下,开发者需自行控制事务的开启、提交和回滚;自动...

    MyBatis Source MyBatis源代码

    1. **SqlSessionFactoryBuilder**: 这是创建SqlSessionFactory的构建器,SqlSessionFactory是MyBatis的核心组件,负责管理SqlSession和配置信息。你可以看到如何通过XML配置文件或者基于注解的方式构建...

    mybatis所用架包

    二级缓存是全局的,不同SqlSession之间可以共享,但需要注意并发控制问题。 LibrarySupport可能包含了MyBatis所需的JAR文件,如mybatis.jar、mybatis-xmlmapper.jar、以及数据库驱动等。这些库文件确保了MyBatis...

    mybatis中文参考手册

    二级缓存则跨SqlSession,可以在多个会话间共享数据,但需要注意并发控制和数据一致性问题。 总的来说,MyBatis以其简单易用和高度灵活的特性,成为Java开发中的主流持久层框架之一。通过深入理解并熟练掌握MyBatis...

    java面试——MyBatis面试专题.zip

    - SqlSessionFactory:这是MyBatis的核心,负责创建SqlSession对象,SqlSession代表一次数据库会话。 - SqlSession:用于执行SQL语句,提供了增删查改等操作。 - Mapper:接口或者XML配置文件,定义了SQL语句及其...

    MyBatis-05 缓存机制

    然而,需要注意的是,二级缓存可能导致数据一致性问题,特别是在多线程环境下,因此在使用过程中需要关注并发控制和数据同步。 总之,MyBatis的缓存机制是提高系统性能的重要手段,一级缓存优化了单个SqlSession的...

    mybatis-spring-1.3.2.zip

    2. **SqlSessionTemplate**: 它是一个线程安全的 SqlSession 实现,可以避免在 Spring 应用中直接使用 SqlSession 的并发问题。SqlSessionTemplate 提供了与 SqlSession 相同的方法,但自动处理事务、异常和关闭资源...

    mybatis - api文档

    - MyBatis默认不管理事务,需要用户自己控制。可以通过SqlSession的commit()和rollback()方法进行事务提交和回滚。 - 在Spring整合MyBatis时,可使用Spring的PlatformTransactionManager进行事务管理。 7. **插件...

    mybatis-第三天.doc.pdf

    - 二级缓存的使用需要注意并发控制和数据一致性问题,因为它可能被多个线程访问。 8. **MyBatis 的集合处理** - MyBatis 支持 List、Set 等集合类型的映射,可以将查询结果自动转换为集合对象。 - 在 XML 映射...

    mybatis2020.zip

    在这个名为 "mybatis2020.zip" 的压缩包中,我们可以期待找到一系列关于 MyBatis 缓存机制的深入解析和实践案例。 MyBatis 的缓存机制是其性能优化的重要组成部分,分为一级缓存和二级缓存。一级缓存是基于 ...

    mybatis-spring-1.2.0.jar

    1. **自动事务管理**:整合Spring的声明式事务管理,使得在MyBatis中可以方便地进行事务控制。 2. **SqlSession管理**:避免手动创建和关闭SqlSession,自动在Spring的上下文中处理SqlSession生命周期。 3. **...

    mybatis学习的相关电子书pdf格式

    二级缓存则是全局的,跨SqlSession共享,但需要注意并发控制和数据一致性问题。 在实际项目中,MyBatis常与Spring框架结合使用,通过Spring的MyBatis整合,可以实现依赖注入,简化配置,以及更优雅地管理...

    mybatis源码

    二级缓存是Mapper级别的,多个SqlSession可以共享数据,但需要注意并发和数据一致性问题。 总的来说,MyBatis源码的学习可以帮助我们深入理解其工作原理,提高开发效率,更好地解决实际问题。通过阅读源码,我们...

    mybatis-3.5.7.zip

    MyBatis的文档详细介绍了配置、映射器、动态SQL、缓存、事务控制等多个方面。 6. **示例**:如果包含示例代码,通常会提供一个快速入门的项目,展示如何配置MyBatis,创建Mapper接口,编写XML映射文件,以及如何在...

    spring与mybatis整合实现事务配置

    Spring将管理MyBatis的SqlSession,实现事务的统一管理。 4. **事务配置**:在Spring中,事务管理有两种方式:编程式事务管理和声明式事务管理。通常我们采用声明式事务管理,通过`<tx:annotation-driven>`标签启用...

    MyBatis3.1.1.zip官方文档(所有)

    在MyBatis 3.1.1版本中,可能包括了关于这些特性的详细说明、使用示例、API参考等内容。开发者可以通过阅读文档了解如何配置MyBatis、如何创建Mapper、如何编写动态SQL、如何使用缓存以及如何实现自定义插件等。此外...

    mybatis-day02

    二级缓存则是全局的,可以在多个SqlSession之间共享,但需要注意并发控制问题。 9. **事务管理** MyBatis可以与Spring等框架集成,利用其事务管理功能。在没有外部框架的情况下,可以通过SqlSession的begin...

Global site tag (gtag.js) - Google Analytics