精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-10-04
只在论坛中最常用的操作上讨论:列出主题列表,列出帖子内容,发新主题,回复主题 有几个问题想请教一下: 1.如何更有效的设置缓存 iBatis的缓存跟statementId有关,跟parameterClass也有关,但是缓存的更新只与statementId有关。我希望这样,当postTopic后,只清除跟这个主题有关的回复,下次重新查询,或者更新缓存以与数据库同步,我觉得iBatis的缓存做不到这点,是不是只能自己实现? 2.分页和缓存如何配合 假设是mysql,自己写分页查询limit start,offset,并把start和offset作为参数,并在查询上设置缓存,此缓存在有新主题发布时清空。这样做的话,假设原来是100条,每页10条,分10页,新加一条主题,原有的10页都会清空,这个还可以接受。如果仅仅是修改了其中一条主题,也不得不清空全部主题缓存,总觉得不太顺心。 iBatis的缓存是否可以设置得更细一些? 谢谢 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-10-08
用ibatis自带的缓存支持,不一定能满足你的要求!
建议自己做cache!比如ehcache做数据缓存,oscache做页面缓存! |
|
返回顶楼 | |
发表时间:2006-10-10
说说容易做以来麻烦
|
|
返回顶楼 | |
发表时间:2006-10-26
我现在也遇到分页的问题啊! 我现在是把MYSQL的limit写成一个被<include refid="pageSQL">的形式 在需要翻页的sql语句中包含进来。同时在写一个通用的含有start,offset两个key的MAP对象最为翻页查询的公共baseParameterMap。翻页的问题是可以解决了,可翻页前的记录数统计还是无法解决。
我还尝试了另一种方法 写个baseParameterClass BaseParameter{ private int start; private int offset; private Object param; ......... } 这个类作为翻页功能入参基类,实际的参数设置到param成员中去,SQL中的参数配置为#param.XXXX#。执行时竟然报Object对象不包含getXXX方法,我狂晕。连自动检测Object的实际类型都没有。 |
|
返回顶楼 | |
发表时间:2006-10-26
做起来麻烦,难道就不做了吗?
|
|
返回顶楼 | |
发表时间:2006-10-27
luming711115 写道 我现在也遇到分页的问题啊! 我现在是把MYSQL的limit写成一个被<include refid="pageSQL">的形式 在需要翻页的sql语句中包含进来。同时在写一个通用的含有start,offset两个key的MAP对象最为翻页查询的公共baseParameterMap。翻页的问题是可以解决了,可翻页前的记录数统计还是无法解决。
我还尝试了另一种方法 写个baseParameterClass BaseParameter{ private int start; private int offset; private Object param; ......... } 这个类作为翻页功能入参基类,实际的参数设置到param成员中去,SQL中的参数配置为#param.XXXX#。执行时竟然报Object对象不包含getXXX方法,我狂晕。连自动检测Object的实际类型都没有。 "可翻页前的记录数统计还是无法解决"一般这个总数,我们是通过select count(*) from table与查找记录相同条件的得出一个记录总数后,传入给现在的分页函数的! |
|
返回顶楼 | |
发表时间:2006-11-08
[quote="edusaj
"可翻页前的记录数统计还是无法解决"一般这个总数,我们是通过select count(*) from table与查找记录相同条件的得出一个记录总数后,传入给现在的分页函数的! 这样做意味着每个需要进行翻页的SQL语句都有一个对应的select count(*) from table的配置,这样的配置量大的吓人(实际应用中翻页的SQL语句是非常多的)。其实计算总记录数这些SQL完全可以做成模板,有很多人想直接取itabis中配置的sql语句就是这个原因(可惜目前没有有效的方法)。 |
|
返回顶楼 | |
发表时间:2006-11-08
使用缓存,首先要清楚什么样的数据适合放入Cache中?通常是更新不频繁,访问量高,命中率高的适合放入Cache中,这就和我们的商业逻辑相关。
根据我们的经验,直接使用ibatis自己的缓存,从缓存的粒度和灵活性上都不高,所以不建议使用ibatis自带的缓 |
|
返回顶楼 | |
发表时间:2006-11-09
yangzheng 写道 使用缓存,首先要清楚什么样的数据适合放入Cache中?通常是更新不频繁,访问量高,命中率高的适合放入Cache中,这就和我们的商业逻辑相关。
根据我们的经验,直接使用ibatis自己的缓存,从缓存的粒度和灵活性上都不高,所以不建议使用ibatis自带的缓 确实如此。所以才需要根据实际情况写针对应用的缓存 不知道hibernate和ActiveRecord是否也需要如此 |
|
返回顶楼 | |
发表时间:2006-11-13
luming711115 写道 [quote="edusaj
"可翻页前的记录数统计还是无法解决"一般这个总数,我们是通过select count(*) from table与查找记录相同条件的得出一个记录总数后,传入给现在的分页函数的! 这样做意味着每个需要进行翻页的SQL语句都有一个对应的select count(*) from table的配置,这样的配置量大的吓人(实际应用中翻页的SQL语句是非常多的)。其实计算总记录数这些SQL完全可以做成模板,有很多人想直接取itabis中配置的sql语句就是这个原因(可惜目前没有有效的方法)。 这些SQL完全可以做成模板,指的什么?有大概模型吗? |
|
返回顶楼 | |