Hibernate中的一级缓存
HibernateTest.java 代码:
Session session=
Guestbook gb=(Guestbook)session.get(Guestbook.,2 Guestbook gb2=(Guestbook)session.get(Guestbook.,2
System.out.println(gb==
}
运行效果: 我们会看到,这里只用了一条select语句。但是我们读的是两条记录啊! 为什么会出现这种情况呢? 这是因为 Hibernate使用了一级缓存,一级缓存又叫Session缓存 在一个会话的生命期里面,他所用到的数据会使用缓冲的,第一次读的是编号为2的数据记录 第一次读的时候,内存中什么都没有,这时候就要用一条select语句从数据库中读出一条记录,同时把这些数据放到session的缓存 里面,接下来又要读同样的数据,这时候他就不会再向数据库读取数据,而是向缓存中读取数据。 得到这个对象,把这个对象返回,所以我们看到一条select语句 Sysout(true);即:gb=gb2 log4j:WARN No appenders could be found =?
Session session=
Guestbook gb=(Guestbook)session.get(Guestbook.,2
session=
Guestbook gb2=(Guestbook)session.get(Guestbook.,2
System.out.println(gb==
}
运行效果: 我们看到,我们要跟新两条记录,但是这里只是执行了一条update语句。 这是Hibernate利用缓存,用一个update就可以了。 log4j:WARN No appenders could be found =?=?
?HibernateTest.java
Session session=
Guestbook gb=(Guestbook)session.get(Guestbook.,2
gb.setName("Hongtenzone@foxmail.com" gb2.setEmail("Helloworld@sina.com"
}
运行效果: <div class="cnblogs_code"> log4j:WARN No appenders could be found =?=?=?=?=?=?=?=?=?=?
代码:
Session session=
Guestbook gb=(Guestbook)session.get(Guestbook.,2
Guestbook gb2=(Guestbook)session.get(Guestbook.,2
System.out.println(gb==
}
运行效果:
log4j:WARN No appenders could be found =?
测试二: HIbernateTest.java 代码:
Session session=
Guestbook gb=(Guestbook)session.get(Guestbook.,3
Guestbook gb3=(Guestbook)session.get(Guestbook.,2 Guestbook gb4=(Guestbook)session.get(Guestbook.,3
System.out.println(gb== System.out.println(gb2==
}
运行效果:
log4j:WARN No appenders could be found =?
测试三: HibernateTest.java 代码:
Session session=
Guestbook gb=(Guestbook)session.get(Guestbook.,3
}
运行效果:
log4j:WARN No appenders could be found =?
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |