关于Hibernate的几点回顾:get/load/SessionFactory/延迟加载
来源:互联网 发布:淘宝好友在哪里看 编辑:程序博客网 时间:2024/05/18 02:05
1,Hibernate中get()方法和load()方法的相同点与不同点?
如果在缓存中没有找到对象,get()方法会直接访问数据库,并返回一个完全初始化
好的对象。load()方法如果在缓存中没有找到对象,则会返回一个代理对象,只有在对象
getId()之外的其他方法被调用时才会真正去访问数据库,这在某些场景下可以显著提升
查询性能。
一句话概括就是:get()方法是“立即加载”,load()方法是“延迟加载”。
2,Hibernate的延迟加载是如何实现的?
Hibernate的延迟加载,使用的是CGLIB的动态代理机制,也就是基于Class的动态代
理机制(区别于基于接口的动态代理机制)。Hibernate在使用到一个对象的时候,才会
去动态加载这个对象,这个机制和Spring加载bean的机制如出一辙。关于基于JDK的动态
代理和CGLIB的动态代理的区别, 可以参考我的之前的一篇博文:
《Java代理模式详解及案例分析:静态代理/动态代理》
http://blog.csdn.net/reggergdsg/article/details/53024827
3,Hibernate中的SessionFactory是线程安全的吗?
SessionFactory是线程安全的。SessionFactory是全局的。如果一个应用只使用了一
种数据库,那么这个应用就只有一个SessionFactory。SessionFactory是全局共享的。
积雨空林烟火迟,蒸藜炊黍饷东菑。
漠漠水田飞白鹭,阴阴夏木啭黄鹂。
山中习静观朝槿,松下清斋折露葵。
如果在缓存中没有找到对象,get()方法会直接访问数据库,并返回一个完全初始化
好的对象。load()方法如果在缓存中没有找到对象,则会返回一个代理对象,只有在对象
getId()之外的其他方法被调用时才会真正去访问数据库,这在某些场景下可以显著提升
查询性能。
一句话概括就是:get()方法是“立即加载”,load()方法是“延迟加载”。
2,Hibernate的延迟加载是如何实现的?
Hibernate的延迟加载,使用的是CGLIB的动态代理机制,也就是基于Class的动态代
理机制(区别于基于接口的动态代理机制)。Hibernate在使用到一个对象的时候,才会
去动态加载这个对象,这个机制和Spring加载bean的机制如出一辙。关于基于JDK的动态
代理和CGLIB的动态代理的区别, 可以参考我的之前的一篇博文:
《Java代理模式详解及案例分析:静态代理/动态代理》
http://blog.csdn.net/reggergdsg/article/details/53024827
3,Hibernate中的SessionFactory是线程安全的吗?
SessionFactory是线程安全的。SessionFactory是全局的。如果一个应用只使用了一
种数据库,那么这个应用就只有一个SessionFactory。SessionFactory是全局共享的。
积雨空林烟火迟,蒸藜炊黍饷东菑。
漠漠水田飞白鹭,阴阴夏木啭黄鹂。
山中习静观朝槿,松下清斋折露葵。
野老与人争度罢,海鸥何事更相疑。
0 0
- 关于Hibernate的几点回顾:get/load/SessionFactory/延迟加载
- hibernate--get load延迟加载的问题
- hibernate延迟加载(get和load的区别)
- hibernate延迟加载(get和load的区别)
- hibernate延迟加载(get和load的区别)
- hibernate延迟加载(get和load的区别)
- hibernate延迟加载(get和load的区别)
- hibernate延迟加载(get和load的区别)
- hibernate延迟加载(get和load的区别)
- hibernate延迟加载(get和load的区别)
- hibernate延迟加载(get和load的区别)
- hibernate延迟加载(get和load的区别)
- hibernate延迟加载(get和load的区别)
- hibernate延迟加载(get和load的区别)
- hibernate延迟加载(get和load的区别)
- hibernate延迟加载(get和load的区别)
- hibernate延迟加载(get和load的区别)
- hibernate延迟加载(get和load的区别)
- k-Factorization CF
- 手把手git教程(04)--远程仓库设置
- 割边
- 搜索旋转排序数组 II
- 浅谈Android多线程编程
- 关于Hibernate的几点回顾:get/load/SessionFactory/延迟加载
- 递推递归练习L
- 九度OJ 题目1083:特殊乘法
- 二分图最大匹配
- nginx 出现413 Request Entity Too Large
- first、follow、select集合求法及LL1文法判别
- 递推递归练习--M(数值分解)
- Twitter Lite以及大规模的高性能React渐进式网络应用
- LintCode 29 交叉字符串