Hibernate中取对象的两个方法load()和get()有什么区别
2个回答
展开全部
其实都是查询,只不过load()有延时加载
get方法不使用延迟加载机制,load采用延迟加载机制
如果没有满足条件的记录,get方法返回null,load则抛出异常
load方法返回的对象是一个动态代理类(Hibernate框架动态生成的,是实体类的子类型)。
get方法返回的对象类型就是原实体类型
延迟实现原理:
---在使用具有延迟加载机制API时,返回的是一个动态代理类型
首先动态在内存中创建的一个类
然后动态编译这个类,载入类加载器
---返回的动态代理类是原实体类型的一个子类。
---动态代理类重写了实体类的getter,检测是否加载数据库的数据,未加载进行数据库查询,然后返回该属性值。
get方法不使用延迟加载机制,load采用延迟加载机制
如果没有满足条件的记录,get方法返回null,load则抛出异常
load方法返回的对象是一个动态代理类(Hibernate框架动态生成的,是实体类的子类型)。
get方法返回的对象类型就是原实体类型
延迟实现原理:
---在使用具有延迟加载机制API时,返回的是一个动态代理类型
首先动态在内存中创建的一个类
然后动态编译这个类,载入类加载器
---返回的动态代理类是原实体类型的一个子类。
---动态代理类重写了实体类的getter,检测是否加载数据库的数据,未加载进行数据库查询,然后返回该属性值。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询