Hibernate中load方法与get方法的区别
load()方法:
当程序调用load方法时,hibernate会认为拥有该id的对象一定存在数据库中,返回的是代理实体。万一数据库查找不到,会抛出异常ObjectNotFoundException;hibernate执行策略为先从缓存中查找,如果找到返回代理实体,如果没有找到再到二级缓存查找,如果找不到再创建代理到数据库查找返回。万一找不到,就会抛出找不到对象ObjectNotFoundException异常。
get()方法:
程序调用get()方法,hibernate首先从缓存中查找,找不到再到二级缓存,再找不到就直接到数据库查找返回。如果找不到会返回null。
get()方法返回的是实体,load()方法返回的是代理实体。
阅读(686) | 评论(0) | 转发(0) |