hibernate 的急加载与懒加载

急加载在产生对象是就会把session数据放到缓存中。
懒加载是在使用该对象是才会见session数据放到缓存中。

急加载
@Test
public void get(){
// 查询出来后放在缓存中
RoleEntity roleEntity = session.get(RoleEntity.class,“4028098170e167190170e1671ada0001”);
session.close();
// 从缓存中获取数据,所关闭session后还是可以从缓存中获得数据
System.out.println(“session关闭之后”+roleEntity.getRoleName());
}

执行结果
Hibernate: select roleentity0_.roleId as roleId1_0_0_, roleentity0_.roleName as roleName2_0_0_ from sys_role roleentity0_ where roleentity0_.roleId=?
session关闭之后管理者1
因为才产生对象时就将数据放在缓存中了,所以关闭session还能获得数据。

// 懒加载
@Test
public void load(){
// 懒加载这里不会获取从数据查询出数据,是在使用这个对象的时候才会执行查询并放到缓存中
RoleEntity roleEntity = session.load(RoleEntity.class,“4028098170e167190170e1671adc0002”);
session.close();
System.out.println(roleEntity.getRoleName());
}

执行结果
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
因为在产生对象时不会将session数据放到缓存中,所在关闭session后就报出了找不到session。

// 懒加载
@Test
public void load(){
// 懒加载这里不会获取从数据查询出数据,是在使用这个对象的时候才会执行查询并放到缓存中
RoleEntity roleEntity = session.load(RoleEntity.class,“4028098170e167190170e1671adc0002”);
// 在session关闭前获取session数据并放入缓存。
System.out.println(“session关闭前”+roleEntity.getRoleName());
session.close();
System.out.println(“session关闭后”+roleEntity.getRoleName());
}

执行结果是
Hibernate: select roleentity0_.roleId as roleId1_0_0_, roleentity0_.roleName as roleName2_0_0_ from sys_role roleentity0_ where roleentity0_.roleId=?
session关闭前管理者2
session关闭后管理者2

因为在关闭session前有使用该对象属性,就会把数据也放到放到缓存中,在关闭session后还可以从缓存中获得session数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值