0
我有一个表,Users
,主键为id :: int4
,自然键为password :: varchar(32)
。我想使用Hibernate尽可能快地检查数据库中的组合id
和password
是否存在一行。休眠L2查询缓存:不要在缓存中缺少命中数据库
所以我加载所有用户的L2高速缓存,并做
User u = (User)session.get(User.class, uId);
if (!u.getPassword().equals(pass)) {
// fail when passwords are not equal
}
这是一件好事,当缓存被击中,但在高速缓存未命中(这意味着输入数据错误),这将触发select查询。如果在缓存中没有找到值,我怎么才能指出hibernate不要命中数据库?
我看到一个选项,直接从缓存中加载用户,然后使用类似session.merge()
它。但也许有更好的方法?
PS。我还有一个抱怨。如果密码不相同,我的用户对象脱水时性能会降低(尚未进行配置)。这也可以消除?