论坛首页 Java企业应用论坛

[轮子] FreyjaJdbcTemplate预览版(添加查询缓存功能)

浏览 9320 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-11-22   最后修改:2011-11-22
aa87963014 写道
gtssgtss 写道
lz的缓存有何特别之处?

不是缓存特别,而是支持原生sql语法。
并且在支持原生sql语法的情况下能做缓存功能。

意思就是可以直接用sql对缓存进行查询,并且如果有数据的话,还可以是另一个sql语句?
0 请登录后投票
   发表时间:2011-11-22  
gtssgtss 写道

意思就是可以直接用sql对缓存进行查询,并且如果有数据的话,还可以是另一个sql语句?





意思是你可以使用原生sql来写程序,一般来说是利用不到缓存的。但是freyja可以在使用原生sql的情况下利用缓存。

例如类似:

select k.*,j.c from (select date(paytime) as p,sum(total), count(*),sum(buynum) from GameOrder group by date(paytime)) k left join (select x.u as b,count(*) as c from (select date(paytime) as u,count(regUserId),regUserId from GameOrder group by date(paytime),regUserId) x group by x.u) j on j.b = k.p order by k.p desc

 这种sql,函数什么的都可以使用数据库函数。没有其他学习成本,只需要把sql里面的表和字段替换成annotation映射的字段。

 

当然,上面这条sql其实就是翻译成sql然后执行并且封装返回值。这类sql利用不到缓存。

0 请登录后投票
   发表时间:2011-11-22  
A,最简单的缓存:以sql(和参数等)为key取得map里的value
B,实现一个内存数据库,查不到的时候查询真实数据库
这两种难度差了N个数量级,呵呵
0 请登录后投票
   发表时间:2011-11-22  
gtssgtss 写道
A,最简单的缓存:以sql(和参数等)为key取得map里的value
B,实现一个内存数据库,查不到的时候查询真实数据库
这两种难度差了N个数量级,呵呵

A update 怎么办?
0 请登录后投票
   发表时间:2011-11-22   最后修改:2011-11-22
遍历keySet啊,可以把表名之类的也放入key里嘛
if(!key.getTableSet().retainAll(sql.getTableSet()).isEmpty()){
     map.remove(key);
}
0 请登录后投票
论坛首页 Java企业应用版

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