Hibernate3疑惑解决
1.session的get()和load()有什么区别?
# get()如果没有找到持久化类返回null,有可能导致空指针异常。
# load()如果没有找到持久化类直接抛出异常。
# get()是直接加载数据,load()是延迟加载,当使用被加载数据的时候才发送SQL。
简而言之:Hibernate对于load()认为数据库一定存在,因此可以放心的使用代理进行延迟加
载,如果使用中发现了问题,那么只能抛出异常。而对于get方法一定要获取真实的数据,否则
返回null。
DataType dataType1 = (DataType) session.load(DataType.class, new Long(1));
DataType dataType2 = (DataType) session.load(DataType.class, new Long(1));
System.out.println(dataType1); // 延迟加载,需要使用才发送SQL语句
System.out.println(dataType2); // 从一级缓存中获取持久化对象
System.out.println(dataType1 == dataType2);
session.getTransaction().commit();
2.Query对象在获取表的所有的数据的时候,使用list()和 iterator()有什么区别?
# 编写代码的方式不同 list()和iterator()
# 底层发送的SQL语句不同
list()直接一次性获取到所有持久化类的对象
iterator()先获取的是所有的数据的id值。当真正的遍历使用数据的
时候再发送select语句。因此该方法一定要处于session会话中。
# list发送的查询语句只有1条。Iterator发送多条查询语句,因此
iterator的效率低下。懒汉式(iterator) 饿汉式(list)
3.list和iterator什么时候使用?
list()如果表中有少量条数据
iterator()如果表中有N W条数据
联合主键问题?
(1) 联合主键映射后可以进行数据的插入
(2) 联合主键添加后如何查找该持久化对象?
(3) 联合主键类为什么要实现Serializable接口?
问题解决
(1) 继续使用get方式加载持久化的对象
get(Class clazz, Serializable id)
(2) 只有主键实现了Serializable接口才可以调用该get()方法
Hibernate3疑惑解决的更多相关文章
- org.springframework.orm.hibernate3.LocalSessionFactoryBean的疑惑解决办法
在项目中使用了SSH框架(Struts2 + Spring3+ Hibernate3),applicationContext中配置了sessionFactory <bean id="s ...
- [转]Hibernate3如何解决n+1 selects
摘自: http://blog.chinaunix.net/uid-20586655-id-287959.html Hibernate3中取得多层数据的所产生的n+1 selects问题的解决 ...
- 关于ArrayList 中子方法 -- contains 疑惑解决
写之前先看下 ArrayList 子函数 contains 的Api 怎么介绍: boolean contains(Object o) 如果此列表中包含指定的元素,则返回 true ...
- in_array 判断问题的疑惑解决。
面试题中有一条是关于in_array判断的,题目如下: 如何大家没有深入了解in_array的类型判断过程,而是根据经验来选择,肯定很多人也是是选择了D答案的,具体的原因我也是从牛人的博客里面得到答案 ...
- HttpUrlConnection get和post简单实现(疑惑解决)
近期研究微信的公众平台开发.须要和微信的server进行数据读取,简单研究了下jdk自带的HttpUrlConnection类(URLConnection的子类),简单实现了一下微信的access_t ...
- 关于flume中的几个疑惑
文章发自http://www.cnblogs.com/hark0623/p/4205756.html 转载请注明 flume越用越有一些疑惑,这个月中按计划是要阅读flume源码的,我希望能解决我的 ...
- Java_SSH项目主要步骤记录
建立Spring-Struts-Hibernate的步骤整理 1. 建立web project 2. 建立hernate, action, service包 3. 右击项目,add myeclipse ...
- 第20篇 js高级知识---深入原型链
前面把js作用域和词法分析都说了下,今天把原型链说下,写这个文章费了点时间,因为这个东西有点抽象,想用语言表达出来不是很容易,我想写的文章不是简单的是官方的API的copy,而是对自己的知识探索和总结 ...
- Maven 开发hibernate存在的诸多问题
项目结构: 开发平台: maven version 3.5 eclipse 4. 7 oxyen 最新:hibernate 5.x 引入问题 官网提供的必需选择只有 这个 当然还需要我们单独配置mys ...
随机推荐
- 为什么有了uwsgi还要nginx这个“前端”服务器
相信每一个使用nginx+uwsgi+django部署过的人,都感到非常复杂.到底为什么一个项目的发布要经过这么多层级,他们每一层有什么理由存在?这就带大家宏观地看待一下 首先nginx 是对外的服务 ...
- php的三个常用判断函数
<?phperror_reporting(E_ERROR);$a;$b = false;$c = '';$d = 0;$e = null;$f = array(); echo 'empty', ...
- 图像处理---《Mat对象 与 IplImage对象》
图像处理---<认识 Mat对象> Mat对象 与 IplImage对象 (1)Mat对象:OpenCV2.0之后引进的图像数据结构.自动分配内存.不存在内存泄漏的问题,是面向对象的数据结 ...
- GDB调试器教程
启动和退出GDBGDB(GNU Project Debugger)几乎适用于所有类Unix系统,小巧方便且不失功能强大,Linux/Unix程序员经常用它来调试程序. 总的来说有几下几种方法启动GDB ...
- docker学习内容
有个博客写的蛮好的,转一下 https://blog.csdn.net/xiaochendefendoushi/article/details/80979905 等我用到的时候再仔细瞧瞧
- python内置函数(二)之filter,map,sorted
filter filter()函数接收一个函数 f 和一个iterable的对象,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条 ...
- bzoj1797: [Ahoi2009]Mincut 最小割(网络流,缩点)
传送门 首先肯定要跑一个最小割也就是最大流 然后我们把残量网络tarjan,用所有没有满流的边来缩点 一条边如果没有满流,那它就不可能被割了 一条边如果所属的两个强联通分量不同,它就可以被割 一条边如 ...
- C# 操作服务命令
安装服务 @echo.服务启动...... @echo off @sc create 服务名称 binPath= " exe地址" @net start 服务名称 @sc conf ...
- 题解 [CF891C] Envy
题面 解析 首先根据Kruskal算法, 我们可以知道, 在加入权值为\(w\)的边时, 权值小于\(w\)的边都已经加进树里了(除了连成环的). 所以,我们可以保存一下每条边的端点在加入生成树之前的 ...
- HDU 6085 - Rikka with Candies | 2017 Multi-University Training Contest 5
看了标程的压位,才知道压位也能很容易写- - /* HDU 6085 - Rikka with Candies [ 压位 ] | 2017 Multi-University Training Cont ...