有关hibernate的几个面试问题
来源:互联网 发布:微信打不开淘宝链接 编辑:程序博客网 时间:2024/05/01 12:17
1)hibernate的get(),load()问题
当在缓存中没有找到相应的对象时,get会直接访问数据库并返回完全初始化好的对象,而load在缓存无此对象时,只会返回一个代理对象,只有在getid()之外的其他方法被调用时才会真正访问数据库,在一定的情况下提高了性能;
其重要区别其指,在未能发现符合条件的对象时,get方法会返回null,而load方法会抛出ObjectNotFoundException。其load相当于一直相信数据库一定存在满足条件的数据,可使用代理来延迟加载,而其中存在问题则往外抛出异常;对于get方法,hibernate一定要获取真实数据,否则为null!
注:所谓的延迟加载为了避免无谓的一些性能开销而提出来,指当真正需要数据的时候才会真正的数据加载操作。
2)hibernate的二级缓存
二级缓存在SessionFactory级别维护的缓存,且二级缓存针对整个应用而不是某一个Session。
3)hibernate并发机制
(转)数据库事务的定义
数据库事务(Database Transaction),是指作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。
● 原子性(atomic),事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行
● 一致性(consistent),事务在完成时,必须使所有的数据都保持一致状态。
● 隔离性(insulation),由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。
● 持久性(Duration),事务完成之后,它对于系统的影响是永久性的。
详见
http://blog.csdn.net/crazyitlhs/article/details/49446453
4)hibernate的save(),update()跟saveOrUpdate()区别
update()操作的对象时持久化的,其如果数据库中不存在,则不能使用此方法;
saveOrUpdate()操作的对象无约束,若是持久化的对象,调用该方法就执行更新数据,反之则进行一个数据的save。
save方法适合确定要插入数据,且需要得到插入数据的主键,其不能保存一个持久态或更新一个游离态数据,saveOrUpdate方法倾向不确定数据,且不需要得到它的主键,
5)hibernate的分页查询
exp:从第2000行开始查后50行数据:
Query q=session.createQuery("from 数据表 as xxx");q.setMaxResults(50);list list=q.list();q.setFirstResult(2000);
6)hibernate的sql跟hql查询的区别
1.sql针对的是面向数据表的查询
2.hql是面向对象的查询
exp:
sql:from 数据表 where后续加的是数据表中字段
hql:from 类名+类对象 where后续添加的是对象的属性作为条件
7)简谈hibernate的工作原理
读取并解析hibernate核心配置文件与映射文件
hibernate调用API
1.创建 Configuration对象
2.创建session工厂
3.通过工厂创建会话对象
4.获取事物对象
5.进行操作,提交,结束及关闭Session
8)hibernate的3种状态的理解及区别
hibernate的对象的三种状态分别称之为:transient(瞬态或自由态),persistent(持久态,及为数据库中记录相映的PO实例)
,detached(托管状态或游离态)
瞬态:某一个实例跟session都没有关系,即new出来的新实例
持久态:session中持久化了的实例,相当于数据库中的记录,修改数据其对应的数据库中数据也会改变
游离态:持久化对象脱离了Session的对象。如Session缓存被清空的对象。特点:已持久化,但不在Session缓存中。
- 有关hibernate的几个面试问题
- 几个有关 面试 interview 的链接
- 几个有关锁的问题
- hibernate注解的有关问题
- 几个经典的面试问题
- 面试的几个小问题?
- hibernate常问的几个面试题目
- 有关复制发布的几个补充问题
- 有关发布复制的几个补充问题
- [Oracle]有关Oracle的几个小问题
- 有关图的几个经典问题
- 有关树的几个经典问题
- 有关java的几个小问题
- 10个有关String的面试问题
- 10个有关String的面试问题
- 10个有关String的面试问题
- 10个有关String的面试问题
- 10个有关String的面试问题
- eclipse端口被占用(java.net.BindException: Address already in use: bind)解决方法
- 画“猫”神器
- 230. Kth Smallest Element in a BST
- 从《货殖列传》中学习炒股
- JavaScript面向对象编程之prototype对象
- 有关hibernate的几个面试问题
- Android利用高德地图关键字检索POI,显示用户MD5安全码未通过
- 用简单工厂来创建对象和用new创建对象相比好处有哪些
- Linux:进程间通信
- Jmeter教程 简单的压力测试
- UIWebView 背景透明
- matlab找到图像的最大连通区域
- UIWebebView播放视频
- art emacs dired模式复制文件名