我的日常

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 盖世程序员 > 什么是Hibernate中的一级缓存
总共48087条微博

动态微博

查看: 1116|回复: 0

什么是Hibernate中的一级缓存

[复制链接]

279

主题

41

听众

689

金钱

版主

该用户从未签到

跳转到指定楼层
楼主
发表于 2015-07-18 22:10:28 |只看该作者 |倒序浏览
一级缓存是在事务级别或工作单元级别。hibernate默认启用一级缓存,一级缓存与session关联,如果相同的query在相同的session中执行多次,那么与该query关联的data就会缓存,一级缓存的scope是session。
  Q: {/ `' Z8 Q* O
/ K, X3 d1 c8 |+ ^3 y如下面代码:
  1. Session session = factory.openSession();7 @  r+ H& p( E. j* Y
  2. try {
    4 m5 C( a& a4 d4 J% O, B
  3.         Book book1 = (Book) session.get(Book.class, id);' L- B  F$ L# }- K- M  g
  4.         Book book2 = (Book) session.get(Book.class, id);2 A& N, @& W& i# [' Q
  5. } finally {9 I5 Q+ a( _) q; z# E
  6.         session.close();6 y9 S8 d% t/ s6 z6 K
  7. }
复制代码
- e% u+ I( I/ S5 n1 P+ p
执行该代码,只会显示一条sql语句。
  c: P# P+ s) b' S5 W: F6 ?; I
+ I, _, G( r& c# t- R( N3 Y0 u' r5 T2 F0 t5 p, n7 L0 i# m
如果执行下面代码:
  1. Session sess=sf.openSession();
    # }1 I+ V+ Y8 `; j3 y: e1 d
  2.         Book b=(Book) sess.get(Book.class, "PBN123");
    : V* R* F3 F+ k  ?' F
  3.         assertEquals("spring Recipes", b.getName());( O, _) V2 j: x) u1 l: j+ e# {' Y& M
  4.         sess.close();
    & N% r# s( s" k/ r% Y- P8 }
  5.         Session sess1=sf.openSession();
    8 a) Y1 j3 P; V1 b: \, u* m
  6.         Book b1=(Book) sess1.get(Book.class, "PBN123");
    4 `& q  P+ Q+ Q, ^
  7.         assertEquals("Spring Recipes", b1.getName());
    " m8 Z4 S0 k3 u/ l( q* [+ e
  8.         sess1.close();
复制代码
就会显示2条SQL语句
2 |5 S; e8 ?7 j2 T3 A/ Y& J
  1. Hibernate: select book0_.ISBN as ISBN1_0_0_, book0_.NAME as NAME2_0_0_, book0_.PUBLISHDATE a
    " ~1 O  x# L7 u7 M
  2. s PUBLISHD3_0_0_, book0_.PRICE as PRICE4_0_0_, book0_.PUBLISHERCODE as PUBLISHE5_0_0_, publi
    * d) n$ c- e- k  i
  3. sher1_.CODE as CODE1_1_1_, publisher1_.NAME as NAME2_1_1_, publisher1_.ADDRESS as ADDRESS3_1
    ( m$ i2 V' L" x* O3 ~1 [" Z9 u1 M
  4. _1_ from BOOK book0_ left outer join PUBLISHER publisher1_ on book0_.PUBLISHERCODE=publisher7 x# B7 ?, l6 a7 h% T5 Y3 r% M
  5. 1_.CODE where book0_.ISBN=?5 l! A* [) M# t: U1 B
  6. Hibernate: select book0_.ISBN as ISBN1_0_0_, book0_.NAME as NAME2_0_0_, book0_.PUBLISHDATE a6 S* c8 n( B: m1 }" i
  7. s PUBLISHD3_0_0_, book0_.PRICE as PRICE4_0_0_, book0_.PUBLISHERCODE as PUBLISHE5_0_0_, publi4 T! n( f% K8 h1 i1 X! Q6 E! t
  8. sher1_.CODE as CODE1_1_1_, publisher1_.NAME as NAME2_1_1_, publisher1_.ADDRESS as ADDRESS3_1
    7 z) x; [* {+ J4 I8 x* s$ f1 G' T/ N
  9. _1_ from BOOK book0_ left outer join PUBLISHER publisher1_ on book0_.PUBLISHERCODE=publisher0 T7 l0 ?' Z) x+ E/ s
  10. 1_.CODE where book0_.ISBN=?
复制代码
$ t. s( m. y: \7 B. M! ?4 _
+ [* @- x) V- w

9 y3 `/ ^2 ~3 Y4 U# h
# A" R8 s+ ~3 m& e5 p( H

科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、科帮网管理员和版主有权不事先通知发贴者而删除本文


JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

快速回复
您需要登录后才可以回帖 登录 | 立即注册

   

关闭

站长推荐上一条 /1 下一条

发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
快速回复 返回顶部 返回列表