hibernate二级缓存
Session session1 = factory.openSession();
Department dept = (Department) session1.get(Department.class, 2);
System.out.println(dept);
session1.close();
Session session2 = factory.openSession();
Department dept2 = (Department) session2.get(Department.class, 2);
System.out.println(dept2.getUserSet());
session2.close();
部门和员工是一对多的关系,员工没有采用懒加载
两个类都做了配置
<property name="cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
<class-cache class="com.hub.entity.Department" usage="read-write"/>
<class-cache class="com.hub.entity.User" usage="read-write"/>
结果hibernate做了三次查询这是为什么
Hibernate: select department0_.did as did0_0_, department0_.name as name0_0_ from t_department department0_ where department0_.did=?
Hibernate: select userset0_.departmentId as departme3_0_2_, userset0_.uid as uid2_, userset0_.uid as uid1_1_, userset0_.name as name1_1_, userset0_.departmentId as departme3_1_1_, idcard1_.iid as iid2_0_, idcard1_.idName as idName2_0_, idcard1_.user as user2_0_ from t_user userset0_ left outer join idcard idcard1_ on userset0_.uid=idcard1_.user where userset0_.departmentId=? order by userset0_.uid asc
Department{did=2, name='工商部', userSet=[User{uid=1, name='xiaoq122', , idCard=IdCard{iid=1, idName='12sadasdacaweeff'}, User{uid=3, name='lisi', , idCard=null}, User{uid=4, name='zhaoliu', , idCard=null}]}
Hibernate: select userset0_.departmentId as departme3_0_2_, userset0_.uid as uid2_, userset0_.uid as uid1_1_, userset0_.name as name1_1_, userset0_.departmentId as departme3_1_1_, idcard1_.iid as iid2_0_, idcard1_.idName as idName2_0_, idcard1_.user as user2_0_ from t_user userset0_ left outer join idcard idcard1_ on userset0_.uid=idcard1_.user where userset0_.departmentId=? order by userset0_.uid asc
[User{uid=1, name='xiaoq122', , idCard=IdCard{iid=1, idName='12sadasdacaweeff'}, User{uid=3, name='lisi', , idCard=null}, User{uid=4, name='zhaoliu', , idCard=null}]