前两天,又看了一下原作《IBatis in Action》,对缓存(Cache)一节又仔细阅读了一次,感觉 IBatis 的 Cache 设计有点鸡肋的感觉,企业级应用基本不会采用。
1. 缓存什么?
书中写道,一般ORM框架,如Hibernate等,采用对象缓存,而IBatis采用的是简单查询缓存。
简单 query 缓存,意即:
cache.key = sql语句串
cache.value = 查询结果记录集合(List等)
对于一条 映射sql语句,执行时其条件值的集合,理论上是一个无限集,至少条件集会非常大。因此 sql + 条件值的组合数量非常庞大,按结果集合作为 cache.value 的方式缓存,可以预计,内存消耗非常巨大。
从缓存的对象来讲,Hibernate 等的两级缓存是一种更好的设计( session级缓存属于第一种 )。
对象缓存(Object Cache),将对象像库表记录一样,按主键进行缓存,相当于建立一个简单的内存数据库;
查询缓存(Query Cache), 与 IBatis 的缓存所指相同,但它只缓存结果集的主键,因此 cache.value 空间消耗大大减少。
这样对比可见,IBatis 的Cache 不太适合数据量庞大的企业级应用,大型网站应用。
2. 缓存到哪儿?
应该说,如果 IBatis没有提供对 OSCache 的默认支持,那么IBatis的Cache仅仅适合单机部署的小型应用。
但 OSCache 作为分布式缓存的一种,在实际应用中仅占不大的比例。
对于集群部署的大型应用,如果 IBatis 能提供对 Whalin Memached, Spy Memcached,Coherence 等提供支持,将是一种更好的选择。
幸好,IBatis 还提供了 Cache 的扩展点,可以集成自定义的 Cache 方案。 ^_^
分享到:
相关推荐
在Java开发领域,iBatis作为一个轻量级的持久层框架,因其简洁高效而深受开发者喜爱。...阅读《Java_iBatis cache.doc》文档,你会获得更详细的实践指导和示例代码,进一步深化对iBatis缓存的理解。
最近想在最新的Spring5.0中集成ibatis(不是mybatis),发现已经不在支持SqlmapClientTemplate和SqlmapClientFactoryBean,于是搞了这个工具jar来进行支持如下配置 ...
源码中`org.apache.ibatis.cache.Cache`接口定义了缓存的基本操作,而具体的缓存实现如`org.apache.ibatis.cache.impl.PerpetualCache`则实现了缓存的存储和读取。 通过阅读和理解iBatis的源码,我们可以更深入地...
在数据库设计中,一对多关系是指一个父记录可以与多个子记录关联,例如,一个用户可以有多个订单。在iBATIS中,我们可以通过配置XML映射文件来实现这种关系。 1. **配置映射文件** 在`ibatis`的映射文件中,你...
### Spring对IBatis的整合 #### 一、Spring与IBatis整合概述 Spring框架与IBatis(现称为MyBatis)的整合为开发者提供了一种更简洁、更强大的数据库访问方式。Spring通过其内置的支持机制极大地简化了原有的IBatis...
- `applicationContext.xml`是Spring的主配置文件,它定义了Spring容器中的bean,包括对Struts、Ibatis等其他框架的配置,实现各组件间的依赖注入。 - `codelist.xml`则可能包含了全局共享的bean,如`...
iBatis多对多关系详解 iBatis是一种流行的持久层框架,用于简化Java应用程序和关系数据库之间的交互。在本文档中,我们将详细介绍iBatis在处理多对多关系时的配置和实现。 多对多关系 多对多关系是一种常见的关系...
通过这个demo,你可以了解到Ibatis的基本用法,如何编写SQL映射文件,如何设计Mapper接口,以及如何在Java代码中调用这些接口执行数据库操作。同时,也能掌握Ibatis的动态SQL特性,以及如何配合Spring进行更高效的...
书中既详实地介绍了iBATIS的设计理念和基础知识,也讨论了动态SQL、高速缓存、DAD框架等高级主题,还讲解了iBATIS在实际开发中的应用。《iBATIS实战》的最后给出了一个设计优雅、层次清晰的示例程序JGameStore,该...
本文将深入探讨`iBatis` 中的一对多映射关系,以及如何通过源码理解和使用这个特性。 一对多映射是数据库关系模型中的常见概念,指的是一个父表(如部门表)可以对应多个子表(如员工表),每个部门可以有多个员工...
ibatis配置多表关联(一对一、一对多、多对多
总的来说,iBATIS DAO 2.3.4.726版的源码分析对于学习和理解Java中的持久层设计有极大的帮助。通过阅读和理解源码,开发者不仅能掌握iBATIS DAO的基本使用,还能深入了解其内部实现,提升数据库操作的技巧和优化能力...
一对一映射在数据库设计中是指两个表之间存在一对一的关系,例如,一个员工可能只有一个部门,一个部门也只对应一个员工。在iBATIS中,这种关系可以通过配置XML映射文件或者注解来实现。 **一对一映射的基本概念:*...
随着对Ibatis的深入理解和实践,你会发现它在处理数据库操作时的灵活性和强大性。在实际项目中,结合Spring框架使用Ibatis,可以构建出更加健壮、高效的后端系统。因此,无论你是初学者还是有经验的开发者,掌握...
Ibatis 的设计目标是简化开发工作,减少JDBC代码量,提高开发效率,并且在数据库操作上保持灵活度,使得业务逻辑和数据访问层之间的接口清晰明了。 Ibatis 的核心组件包括SqlMapConfig.xml配置文件、Mapper XML ...
5.1 DAO 层设计:基于 Ibatis,开发者可以创建自定义的 DAO 接口,接口方法对应 SQL 映射文件中的 SQL 语句,实现业务逻辑的解耦。 5.2 事务管理:Ibatis 提供了事务控制接口 SqlSession,可以通过编程式或声明式...
在IT行业中,SpringMVC和iBatis是两个非常重要的框架,它们经常被结合使用来构建企业级的Java Web应用程序。SpringMVC是Spring框架的一部分,主要负责处理HTTP请求和控制应用程序的流程,而iBatis则是一个轻量级的...
相对于全自动化ORM解决方案如Hibernate,iBATIS被称为“半自动化”ORM实现,因为它允许开发者直接编写SQL语句,保持对数据库查询的精细控制。 一、iBATIS的核心要素——SQL Maps SQL Maps是iBATIS的核心,通过XML...
一对多关系在数据库设计中非常常见,它意味着一个实体可以与多个其他实体关联。例如,一个用户可能有多个订单,或者一个部门包含多个员工。在Ibatis中,这种关系可以通过配置XML映射文件或使用注解来实现。 首先,...
iBatis Plugin是一款专为IntelliJ IDEA设计的插件,旨在简化iBatis框架的开发流程,提供包括SQLMap XML编辑、代码提示在内的多种便捷功能。与Eclipse中的Abator不同,iBatis Plugin不仅限于代码生成,而是全方位地...