- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
05_Hibernate_Oracl的e技术面试题目
目 录
1 Hibernate框架 2
2 框架综合运用 8
Hibernate框架
Hibernate框架的工作流程
a. 读取并解析配置文件.读取并解析映射信息,创建SessionFactory.打开Sesssion .创建事务Transation.持久化操作.提交事务.关闭Session.关闭SesstionFactorySession接口:Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。SessionFactory接口:SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。Configuration接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。Transaction接口:Transaction接口负责事务相关的操作。Query和Criteria接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。Hibernate.cfg.xml配置文件中,应该包含哪些具体的配置内容
Hibernate运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类,数据库Dialect, 连接池等。
Hibernate映射文件(*.hbm.xml)。
简述Hibernate的主键机制,针对Oracle数据库,有几种主键机制可以适用
A, 数据库提供的主键生成机制。identity、sequence(序列)。
B, 外部程序提供的主键生成机制。increment (递增) ,hilo(高低位) ,seqhilo(使用序列的高低位 ),uuid.hex(使用了IP地址+JVM的启动时间(精确到1/4秒)+系统时间+一个计数器值(在JVM中唯一) ),uuid.string。
C, 其它。native(本地),assigned(手工指定),foreign(外部引用)constrained几个属性的区别
cascade(级联) :
是操作主表或者从表时,要不要自动操作从表或者主表,比如,保存主表的时候,要不要也默认保存从表,cascade 的值主要有四种:none,all,delete,save-update。
Inverse:
是指要不要交出控制权,值有true(交出控制权,不再维护双方的关系)和false(不交出控制权,继续维护双方的关系)。
constrained:
表示当前引用对象的主键是否作为当前对象的主键参考,true为是,false为否.
Hibernate有几种数据查询方式,这几种数据查询方式的优缺点
使用主键id加载对象(load(),get());criteria 最适合动态查询,但不太适合统计查询,qbe还不够强大.只适合简单的查询.hql功能很强大,适合各种情况,但是动态条件查询构造起来很不方便.可以实现特定的数据库的sql.但是可移植性并不好.
集合的延迟加载
属性的延迟加载
Hibernate中Load和Get两种方法查询数据的区别
load是采用延迟机制(load语句不读库,等使用非主键时才去读库),而get不采用延迟机制(get语句时马上读库)。
a.当数据库不存在对应ID数据时,调用load()方法将会抛出ObjectNotFoundException异常,get()方法将返回null.
b.当对象.hbm.xml配置文件class元素的lazy属性设置为true时,调用load()方法时则返回持久对象的代理类实例,此时的代理类实例是由运行时动态生成的类,该代理类实例包括原目标对象的所有属性和方法,该代理类实例的属性除了ID不为null外,所在属性为null值,查看日志并没有Hibernate SQL输出,说明没有执行查询操作,当代理类实例通过getXXX()方法获取属性值时,Hiberante才真正执行数据库查询操作。当对象.hbm.xml配置文件class元素的lazy属性设置为false时,调用load()方法则是立即执行数据库并直接返回实体类,并不返回代理类。而调用get()方法时不管lazy为何值,都直接返回实体类。
c.load()和get()都会先从Session缓存中查找,如果没有找到对应的对象,则查询Hibernate二级缓存,再找不到该对象,则发送一条SQL语句查询。
总之对于get和load的根本区别,一句话,hibernate对于load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,如果在使用过程中发现了问题,只能抛异常;而对于get方法,hibernate一定要获取到真实的数据,否则返回null。
您可能关注的文档
- (10安全,环境)辅导的.ppt
- (2013-5-3)高级DSP缘沫理与应用复习题.doc
- (06上海)1776年7月4的日通过的独立宣言宣告了美国的....doc
- (22-10)以教学案为缘呢体创建高中数学高效课堂(高中数学讲座10).doc
- (A-9)化工流动过程椎嫩合实验.doc
- (86分)云南省干部在的线学习测试-市场竞争新概念(86分).doc
- (savic-netFX介绍)的.ppt
- (N套题合1版)时代光的华---中国经济发展和改革的总体分析-常修泽下.doc
- (中英文对照)2014秋的季算法分析与设计模拟试卷.doc
- (北师大版)=四年级实凝学上册课件-乘法-卫星运行时间.ppt
文档评论(0)