一级缓存是在事务级别或工作单元级别。hibernate默认启用一级缓存,一级缓存与session关联,如果相同的query在相同的session中执行多次,那么与该query关联的data就会缓存,一级缓存的scope是session。/ V4 N' g6 D- h# Y
3 X3 D5 S8 R$ z
如下面代码:
Session session = factory.openSession();2 A6 T# v$ `- q/ E
try {2 ` Y7 t* P& d# `/ \9 @3 x
Book book1 = (Book) session.get(Book.class, id); 3 i& d; D5 K6 O! I4 n
Book book2 = (Book) session.get(Book.class, id);( `2 S0 M( R* s7 |! |: P
} finally {& {* ?8 f1 H4 j# h3 m/ f; _# D
session.close();! k- L9 e' ^$ a; w1 @5 T% Z7 W2 j5 S
}
复制代码
" H& v. t2 }+ L: l2 s& {/ t执行该代码,只会显示一条sql语句。 ; `7 b' {$ m2 Z" ]6 p6 S& G2 Q. k % D0 y+ ~* x7 I, E1 q 1 f5 c; v2 L5 ?3 ~如果执行下面代码: