论坛首页 Java企业应用论坛

ibatis源码学习(一)整体设计和核心流程

浏览 13863 次
精华帖 (0) :: 良好帖 (9) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-03-12  
差不多三个月前写过一个ibatis的帖子,关于里面如下问题,想问下

http://www.iteye.com/topic/1119106

实际使用遇到的问题
关于配置复杂的问题
看下官方文档高级映射,就知道这个难度不大,写着麻烦,配置很繁琐,为了一个特殊的查询是否有必要取那样做,前后端都hashmap,跨过model映射这个,如果要自己写,你的model要符合,我们的model不满足,全部直接都hashmap


0 请登录后投票
   发表时间:2012-03-12  
learnworld 写道

使用SqlMapClientImpl是可以实现线程安全的,我没有清晰理解spring为何这样实现(每次重新创建),或许spring本身的实现就不是最好的,呵呵,求达人解释~ 一个可能的原因是,同一个容器处理线程在处理不同请求时,如果使用ThreadLocal,需要在每一个请求处理时完成对,对ThreadLocal中的Session状态进行清理。 而每次重新创建SqlMapSessionImpl,会简化这些操作。

   spring的模板处理类已有清理处理操作,回顾SqlMapSessionImpl的整个生命周期,好像只有SessionScope对象的preparedStatements属性是可变的。

public <T> T execute(SqlMapClientCallback<T> action)
//已经有清理代码处理的:	
finally {
			// Only close SqlMapSession if we know we've actually opened it
			// at the present level.
			if (ibatisCon == null) {
				session.close();
			}
		}

   因此,基本可排除只是简化清理操作。

0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics