hibernate如何自动利用MemCached的getMulti能力?

我对使用Hibernate+MemCached有一点未解决考虑:

[color=olive][b]MemCached背景[/b]:使用MemCached保存从数据库select出来的某些数据,MemCached作为应用程序和数据库某些数据之间的一个存储中间级。

[b]应用背景[/b]:在使用Hibernate时,实现Hibernate二级缓存接口插入到Hibernate中,通过实践,能够轻松将MemCached和Hibernate进行结合应用到实际应用中。[/color]

现在转入正题:

[b]hibernate如何才能*自动*充分利用MemCached提供getMulti能力?[/b]

如果使用了本地的二级缓存(e.g:OSCache,EHCache),利用query.iterate一般能够提高系统的性能,因为iterate返回Iterator后,调用Iterator.next返回对象后(这是还没有去查找命中或select该主键对应数据行),获取他属性时会从二级缓存里查找是否命中,因为这个查找是本地查找,所以效率比较高。

OK,我的问题是:

1)如果我使用的是需要网络行为的MemCached,我照本宣科地,调用Iterator.next,访问其属性时,应用程序通过网络访问MemCached,查找是否命中。假如最好情况我每次next都命中,这是最好的。可是有多少个对象,就有多少次网络访问。这样似乎并不划算,可能比直接query.list更慢。

2)如果我每次都只是调用Iterator.next时,把id纪录下来,放到数组中,再把这个数组传给MemCached,去查看这些数据是否命中,这样可以只有一次网络访问(假如只有一台MemCached)。这样解决了多次网络访问的问题,可是却不是hibernate的自动行为,这很没意思,因为:
a)没有命中,怎么办?自己再去session.load对象?
b)命中了,又能怎么样?命中了的这些数据现在并不是Hibernate管理的!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值