MyBatis中常用的类就要数SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、SqlMapper了。那么下面对他们的应用范围和生命周期进行一下说明:
1、SqlSessionFactoryBuilder:在应用中该类实例的主要作用是创建SqlSessionFactory实例,故任务完成后就可以消失了。因此该类实例的最佳应用范围和生命周期应为“方法范围”。
2、SqlSessionFactory:在应用的整个周期中会有众多地方需要利用其实例打开某个SqlSession,因此最佳范围是“应用生命周期范围”。故此,可以使用单例与工厂模式,在官方文档中最佳建议是IoC容器,如Spring来生成该实例。
3、SqlSession:该类是非线程安全的,其实例是不能共享的,所以应该每个线程具有自己的SqlSession实例。因此最佳建议是“请求或方法范围”。例如:收到一个Http请求后,创建一个实例,进行某些操作,之后关闭。确保将关闭放于finally中。
4、SqlMapper:是创建绑定映射语句的接口。其实例从SqlSession获得,所以其最宽生命周期与SqlSession相同,因此其实例的执行范围也是“方法范围”,而且其不需要明确的关闭。
分享到:
相关推荐
2. SqlSessionFactory、SqlSession、Mapper实例的作用及其生命周期和作用范围。 3. XML映射配置文件的结构,包括properties、Settings、typeAliases、typeHandlers、objectFactory、plugins、environments、...
这些组件的生命周期和范围在MyBatis中扮演着重要的角色,尤其是在构建和管理数据库会话时。 MyBatis的XML映射配置文件是其配置的重要组成部分,涵盖了多个关键的配置项,比如: - properties:用于配置属性文件,...
最佳范围是请求或方法范围,不应该在类的静态字段或实例字段中保存 SqlSession 的引用,也不应该放在任何类型的管理范围中,如 HttpSession 中。每次使用完 SqlSession 后,都应该显式关闭。 4. **Mapper**:映射器...
它是线程安全的,可以在整个应用的生命周期中复用。 #### SqlSession `SqlSession` 对象代表了一次会话,提供了执行 SQL 语句的方法。它是非线程安全的,在一次请求或事务处理中使用后应立即关闭。 #### Mapper ...
在 Java 开发中,Mybatis 是一款广泛应用的持久层框架,主要用于处理 SQL 查询和数据访问。Mybatis 的核心在于简化 SQL 与 Java 代码之间的绑定,使得开发者可以更加灵活地进行数据库操作。本课件主要探讨了在 ...
- **一级缓存**:也称为本地会话缓存,它的生命周期是伴随着一次会话(SqlSession)的开始和结束。一级缓存默认开启且无法关闭,主要用于减少同一个会话内的多次数据库访问。 - **二级缓存**:也称为全局会话缓存,...
SqlSessionFactory是线程安全的,通常在应用启动时初始化一次,然后在整个应用生命周期中重用。 2. SqlSession:它是执行数据库操作的对象,通过SqlSessionFactory获取。SqlSession提供了增删查改数据库记录的方法...
在本项目中,SpringBoot作为基础框架,负责管理应用的生命周期,提供依赖注入,以及Web服务的构建。 **MyBatis**: MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有...
- **统一的管理**:Spring能够管理Struts 2和MyBatis中的Bean,实现全应用范围内的依赖注入。 - **松耦合**:通过Spring的AOP和IoC,可以降低各组件之间的耦合度,提高代码可读性和可维护性。 - **事务管理**:...
2.5 SqlSessionFactoryBuilder、SqlSessionFactory和SqlSession有各自的生命周期和范围。SqlSessionFactoryBuilder只负责构建SqlSessionFactory,完成后不再需要。SqlSessionFactory是线程安全的,可长期存在。...
- 在单个请求或任务中使用`SqlSession`,确保其生命周期不要跨越多个请求。 通过上述知识点的学习,读者不仅可以深入了解MyBatis的工作原理,还能掌握如何在实际项目中运用这些知识来实现各种功能。无论是对于初学...
在Struts2+Spring的集成中,Spring作为应用的容器,管理Action类的生命周期,实现业务对象的注入,从而降低了组件间的耦合度。 **MyBatis** 是一个持久层框架,它简化了Java与数据库之间的交互。MyBatis允许开发者...
范围和生命周期 \ 8 SqlSessionFactoryBuilder \ 8 SqlSessionFactory\ 9 SqlSession \ 9 映射器实例 \ 9 XML映射配置文件 \ 10 properties\ 10 Settings \11 typeAliases \ 12 typeHandlers \ 13 ...
在整合过程中,Spring会管理SpringMVC和MyBatis的生命周期,通过Spring的ApplicationContext加载相关配置。例如,SpringMVC的DispatcherServlet配置会引用Spring的应用上下文,以便在控制器中注入MyBatis的...
一级缓存是默认开启的,它存储在SqlSession内部,当一次SqlSession生命周期内,相同的SQL语句不会重复执行,而是直接从缓存中获取结果。二级缓存是可选的,它存储在Mapper的命名空间内,跨SqlSession共享,但默认是...
在本实例中,Spring负责管理Bean的生命周期和组装应用程序的各个组件,同时也可以作为事务管理器,确保数据操作的原子性和一致性。 Struts2是基于MVC设计模式的Web框架,用于处理HTTP请求并展示结果。它负责接收...
一级缓存的生命周期与SqlSession紧密相关。当SqlSession关闭或提交事务时,一级缓存会被清空。如果在同一个SqlSession中进行了更新、插入或删除操作,即使没有关闭SqlSession,一级缓存也会被清空,以防止返回过时的...
#### 八、范围和生命周期 - **生命周期管理**: - `SqlSessionFactory`:线程安全的,整个应用只需要一个实例。 - `SqlSession`:不是线程安全的,每次数据库交互都应该在一个新的`SqlSession`中进行。 #### 九、...
1. **一级缓存**(Session缓存):每个Session都有自己的缓存,生命周期与事务或应用事务一致。每个持久化对象有唯一OID,减少对数据库的直接访问。 2. **二级缓存**(SessionFactory缓存):可选的,跨Session共享...