hibernate Session get()和load()方法区别
所属分类 hibernate
浏览量 552
org.hibernate.Session
Object get(String entityName, Serializable id)
Object get(String entityName, Serializable id, LockMode lockMode)
Object load(String entityName, Serializable id);
Object load(String entityName, Serializable id, LockOptions lockOptions)
get 调用后立即向数据库发出sql语句(不考虑缓存的情况下),返回持久化对象
load 调用后返回一个代理对象,该代理对象只保存了实体对象的id,使用对象的非主键属性时才会发出sql语句
数据不存在时,get方法返回null,load方法抛异常 org.hibernate.ObjectNotFoundException
关于延迟加载和缓存
hibernate3 后默认启用延迟加载 lazy=true
get方法不使用延迟加载机制,首先查找 Session缓存,然后查找 二级缓存,然后查找数据库
load方法首先查找 Session缓存,然后查找 二级缓存,若找不到则返回代理对象,使用对象非主键属性时才发出sql语句加载对象
若设置lazy 为 false ,load返回代理对象之后会发出sql语句,记录不存在,抛出ObjectNotFoundException异常
上一篇
下一篇
Spring中的设计模式
设计模式之Facade
Java Files 常用方法
hibernate5.3 tutorials
hibernate5 主键生成策略
windows使用技巧