hibernate 中get和load的区别
hibernate中提供了两个方法get和load这两个方法,具体的实现方式如下:
...get(User.class,id);
....load(Organization.class, id));
?
这两个方法中都是获取数据的意思
1.get方法是要先从内部缓存中去找数据,如果找不到数据就通过sql去数据库中去取,而load方法不会去数据库中取而是通过内部缓存(hibernate一级缓存)中找,如果找不到再到二级缓存中去找,如果缓存中都找不到对象的话,就会抛出异常org.hibernate.ObjectNotFoundException。
2.get方式会直接给数据库发出sql的申请,而load支持延迟加载lazy。
3.找不到符合条件的数据,get()方法将返回null。load()将会报出ObjectNotFoundEcceptio。
4.get()方法直接返回实体类。load()方法可以返回实体的代理类实例。