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 ...
随机推荐
- element 文件上传大小控制
1.页面代码 <el-upload :show-file-list="false" class="upload-demo" :before-upload= ...
- SpringAOP的实现方式
1.使用SpringAPI实现AOP <aop:config> <!-- 切入点:需要操作的目标类中的目标方法 execution中只需要修改全类名 --> <aop:p ...
- centos7下的/etc/rc.local自启动程序
在centos6中有一个/etc/rc.local的启动文件,只要把需要经常启动的程序添加到此文件下并执行source /etc/rc.local就可以实现开机启动了. 在centos7中不知道也是如 ...
- Django 外键、多对多插入数据方法
models.py class UserInfo(models.Model): username = models.CharField(max_length=64,db_column='usernam ...
- oppo面经-java开发
Oppo一面(1)自我简介(2)介绍一个自己做过的最得意的项目,项目的细节,难点,怎么解决的,还存在的问题,有什么优化的想法吗(这个我说了很长时间,面试官说非计算机专业的,有这种实习经验确实能加分)( ...
- fonts/font-awesome-woff2 404问题
报错环境: vue 开发的项目 npm 引入的font-awesome, 页面正常显示,就是控制台会报这个错误 产生原因:因为服务器IIS不认SVG,WOFF/WOFF2 这几个文件类型,只要在IIS ...
- Webpack v4.8.3 快速入门指南
一.进入 https://webpack.docschina.org/ 官方文档,点击 "文档" 进入 文档页面,文档中包含 “概念,配置,API,指南,LOADERS,插件&q ...
- VSS使用技巧
理由很简单:迁出锁定!之所以强调这个,是因为这方面吃过的亏太多,我举几个例子:1.比如两个程序员增加了同一个功能,但是实现方法不同,比如甲:func1,乙 func2,两者代码也不一样第二个人在迁入代 ...
- windows 切换git远程仓库地址后 git push 提示Authentication failed
git切换远程分支: 方法一: git remote set-url origin 你新的远程仓库地址 方法二: git remote rm origin git remote add origin ...
- 关于topN问题的几种解决方案
在系统中,我们经常会遇到这样的需求:将大量(比如几十万.甚至上百万)的对象进行排序,然后只需要取出最Top的前N名作为排行榜的数据,这即是一个TopN算法.常见的解决方案有三种: (1)直接使用Lis ...