load 和 get的区别

[align=center][size=x-large][color=red][b]session加载数据库数据时,load 和 get[/b][/color][/size][/align]

[size=medium][color=green][b]1.load是生成代理对象,调用该对象时才发出sql语句[/b][/color][/size]
	public void testLoad() {

Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
Teacher t = (Teacher)session.load(Teacher.class, 1);

//System.out.println(t.getName()); //此时生成sql语句
session.getTransaction().commit();
System.out.println(t.getName()); //次句会报错ERROR LazyInitializationException,应为load生成的是代理对象,发出sql会有延迟,此处调用发出sql时,session已经关闭,所有会报错no session
}


[size=medium][color=green][b]2.get是直接发sql语句[/b][/color][/size]
	public void testGet() {

Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
Teacher t = (Teacher)session.get(Teacher.class, 1); //此时生成sql语句

session.getTransaction().commit();
System.out.println(t.getName()); //不会报错,输出对象t的name,因为t已经查出
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值