Hibernate知识问答
1.Hibernate的检索方式
答:①导航对象图检索 ②OID检索 ③HQL检索 ④QBC检索 ⑤本地SQL检索
2. Forward与Global-Forward的区别
答:Forward是根据Action return的值找到对应的JSP页。当多个Action共同return同一个值时,可将这个Forward元素写在Global-Forward中。
3.持久化对象的三种状态,代表含义。
答: 临时状态——刚用new语句创建,未被持久化,不处于session的缓存中。
持久化状态——已经被持久化,处于session的缓存中。
游离态——已经被持久化,但不处于session的缓存中。
4、三种检索策略是什么,分别适用于哪种场合?
答:立即检索——
优点:对应用程序完全透明,缺点:select语句数目多。适用:类级别。
延迟检索——
优点: 由应用程序决定加载哪些对象,可以避免执行多余的select语句以及避免加载不需要访问的对象,节省内存空间,提高检索效率。
缺点: 应用程序如果要访问游离态的代理类实例,必须保证它在持久化时已经被初始化。
适用: 一对多或多对多关联。应用程序不需要立即访问或者根本不会访问的对象。
迫切左外连接检索:
优点:对应用程序完全透明,不管对象处于持久化状态还是游离状态,应用程序都可以方便的从一个对象导航到另一个与它相关联的对象。使用了外连接,select语句数目少。
缺点:可能会加载程序不许要访问的对象。复杂的数据库表连接形象检索性能。
适用:一对一或多对一关联。应用程序需要立即访问的对象。数据库系统具有良好的表连接性能。
4、ORM解决的不匹配问题(域模型与关系模型之间存在的不匹配)
答: 域模型是面向对象的,关系模型是面向关系的。
域模型中有继承关系,关系模型中不能直接表示继承关系。
域模型中有多对多关联关系,关系模型中通过连接表来表示多对多关联关系。
域模型中有双向关联关系,关系模型中只有单向参照关系,而且总是many参照one方。
域模型提倡精粒度模型,关系模型提倡粗粒度模型。
5、映射继承关系的三种方式?P 424
答:(1)继承关系树的每个具体类对应一张表:在具体类对应的表中,不仅包含和具体类属性对应的字段,还包括与具体类的父类属性对应的字段。
(2)继承关系树的根类对应一张表:在根类对应的表中,不仅包括根类属性对应的字段,
还包括根类的所有子类属性对应的字段。
(3)继承关系树中的每个类对应一张表,每个表中只包括和这个类本身属性对应的字段,子类的表参照父类对应的表。
6、Session的find()方法以及Query接口的区别。
答案Session类的find()方法以及Query接口都支持HQL检索方式。这两者的区别在于,前者只是执行一些简单HQL查询语句的便捷方法,它不具有动态绑定参数的功能,而且在Hibernate3.x版本中,已经淘汰了find()方法;而Query接口才是真正的HQL查询接口,它提供了以上列出的各种查询功能。
7.ibernate的配置文件(hibernate.properties)中 hibernate.show_sql=true/flase
在开发阶和测试段应设置为()在发布阶段应设置为();true\false
8.映射一对多双向关联关系中设置SET元素:
请写出级联保存和更新、级联删除应在set元素中需要设置那些子元素?(标明关系、避面重复执行多余SQL语句)
Name cascade key column one-to-many inverse
9.list要的实现类有那些? 并按照存储结构、机制简单的说一下。
LinkedList、ArryList、Vector。
LinkedList 采用链表数据结构、ArryList代表大小可变的数组。
Vector与ArryList功能比较相似,区别在于Vector采用同步、ArryList没有采用。
10:以下哪个不是Hibernate的检索方式:
A、导航对象图检索 B、OID检索 C、ORM检索
D、QBC检索 E、本地SQL检索 F、HQL检索
答案:C
11.持久化类的类名是Customer.java,写出相应的映射文件名 。
答案:Customer.hbm.xml
12.继承的三种方式
(1)继承关系树的每个具体类对应一张表:在具体类对应的表中,不仅包含和具体类属性对应的字段,还包括与具体类的父类属性对应的字段。
(2)继承关系树的根类对应一张表:在根类对应的表中,不仅包括根类属性对应的字段,还包括根类的所有子类属性对应的字段。
(3)继承关系树中的每个类对应一张表,每个表中只包括和这个类本身属性对应的字段,子类的表参照父类对应的表。
13. Session接口是Hibernate应用使用最广泛的接口。Session也被称为持久化管理器,它提供了和持久化相关的操作,如添加、更新、删除、加载和查询对象。
14.请简述Session的特点有哪些?
答案:
(1)不是线程安全的,因此在设计软件架构时,应该避免多个线程共享同一个Session实例。
(2)Session实例是轻量级的,所谓轻量级是指它的创建和销毁不需要消耗太多的资源。这意味着在程序中可以经常创建或销毁Session对象,例如为每个客户请求分配单独的Session实例,或者为每个工作单元分配单独的Session实例。
(3)在Session 中,每个数据库操作都是在一个事务(transaction)中进行的,这样就可以隔离开不同的操作(甚至包括只读操作)。
12、Hibernate中采用XML文件来配置对象-关系映射的优点有那些?
答案:Hibernate既不会渗透到上层域模型中,也不会渗透到下层数据模型中。软件开发人员可以独立设计域模型,不必强迫遵守任何规范。数据库设计人员可以独立设计数据模型,不必强迫遵守任何规范。对象-关系映射不依赖于任何程序代码,如果需要修改对象-关系映射,只需修改XML文件,不需要修改任何程序,提高了软件的灵活性,并且使维护更加方便。
13、在Hibernate应用中Java对象的状态有哪些?
答案:
1临时状态(transient):刚刚用new语句创建,还没有被持久化,不处于Session的缓存中。处于临时状态的Java对象被称为临时对象。
2持久化状态(persistent):已经被持久化,加入到Session的缓存中。处于持久化状态的Java对象被称为持久化对象。
3游离状态(detached):已经被持久化,但不再处于Session的缓存中。处于游离状态的Java对象被称为游离对象。
14、 叙述Session的缓存的作用
答案:
(1)减少访问数据库的频率。应用程序从内存中读取持久化对象的速度显然比到数据库中查询数据的速度快多了,因此Session的缓存可以提高数据访问的性能。
(2)保证缓存中的对象与数据库中的相关记录保持同步。当缓存中持久化对象的状态发生了变换,Session并不会立即执行相关的SQL语句,这使得Session能够把几条相关的SQL语句合并为一条SQL语句,以便减少访问数据库的次数,从而提高应用程序的性能。
15、 比较Hibernate的三种检索策略优缺点;
答案:
1立即检索;
优点:对应用程序完全透明,不管对象处于持久化状态,还是游离状态,应用程序都可以方便的从一个对象导航到与它关联的对象;
缺点:1.select语句太多;2.可能会加载应用程序不需要访问的对象白白浪费许多内存空间;
2延迟检索:
优点:
由应用程序决定需要加载哪些对象,可以避免可执行多余的select语句,以及避免加载应用程序不需要访问的对象。因此能提高检索性能,并且能节省内存空间;
缺点:
应用程序如果希望访问游离状态代理类实例,必须保证他在持久化状态时已经被初始化;
3 迫切左外连接检索
优点:
1对应用程序完全透明,不管对象处于持久化状态,还是游离状态,应用程序都可以方便地冲一个对象导航到与它关联的对象。
2使用了外连接,select语句数目少;
缺点:
1 可能会加载应用程序不需要访问的对象,白白浪费许多内存空间;2复杂的数据库表连接也会影响检索性能;
16、 多个事务并发运行时的并发问题有哪些?
答案 第一类丢失更新;脏读;虚读;不可重复读;第二类丢失更新;
17、ORM解决的不匹配问题(域模型与关系模型之间存在的不匹配)
答: 域模型是面向对象的,关系模型是面向关系的。域模型中有继承关系,关系模型中不能直接表示继承关系。域模型中有多对多关联关系,关系模型中通过连接表来表示多对多关联关系。域模型中有双向关联关系,关系模型中只有单向参照关系,而且总是many参照one方。域模型提倡精粒度模型,关系模型提倡粗粒度模型。
18、session的清理和清空有什么区别?
session清理缓存是指按照缓存中对象的状态的变化来同步更新数据库;清空是session关闭;
19.请简述Session的特点有哪些?
答案:
(1)不是线程安全的,因此在设计软件架构时,应该避免多个线程共享同一个Session实例。
(2)Session实例是轻量级的,所谓轻量级是指它的创建和销毁不需要消耗太多的资源。这意味着在程序中可以经常创建或销毁Session对象,例如为每个客户请求分配单独的Session实例,或者为每个工作单元分配单独的Session实例。
(3)在Session 中,每个数据库操作都是在一个事务(transaction)中进行的,这样就可以隔离开不同的操作(甚至包括只读操作)。
20. 如下图 A、B、C请 添上字段,通过 表C建立 表 A 、表B 的双向关系 (要求简单连线)
表B
表 A
表C
Hibernate知识问答相关推荐
- 信贷风控知识问答库(持续更新)
原文链接:信贷风控知识问答库(持续更新 写了几篇关于风控求职或者从业的文章,吸引了不少同学的关注,也吊足了一些伙伴的胃口,为解答常见疑惑,现贴一个持续更新的风控问答链接:<信贷风控知识问答库&g ...
- 西门子fifo_查缺补漏必备 |三菱西门子学员知识问答汇总(技成周报134期)
有朋友问怎么能快速找到以前的周报,今天小编把往期周报内容汇总在一起,方便大家查询,如果觉得有帮助记得点赞,分享哦.点击文章标题可以直接查阅文章内容. [技成学习周报第1期]西门子常见问题解答 [技成学 ...
- 蛋白质合成有关的分子生物学知识问答
蛋白质合成有关的分子生物学知识问答(20问) 我们在临床上常见到的很多神经肌肉病的发生和发展都是与功能蛋白的缺失或异常有关.这些功能蛋白的合成与遗传物质DNA有关.那么带有遗传信息的DNA有如何把遗传 ...
- 基于发电厂知识问答库的检索式问答系统(python有代码)
之前写过基于倒排表的问答系统. 基于倒排表的电力调度知识问答系统构建 问答系统所需要的数据已经提供,对于每一个问题都可以找得到相应的答案,所以可以理解为每一个样本数据是 <问题.答案>. ...
- 论文浅尝 | Wordly Wise(WoW) - 用于语音视觉知识问答的跨语言知识融合模型
笔记整理: 谭亦鸣,东南大学博士生 来源:NAACL'21 链接:https://aclanthology.org/2021.naacl-main.153.pdf 论文提出了一种新的知识图谱问答数据集 ...
- 论文浅尝 - AAAI2020 | 从异质外部知识库中进行基于图的推理实现常识知识问答...
会议:AAAI2020 论文链接:https://arxiv.org/pdf/1909.05311.pdf 摘要 常识问答旨在回答需要背景知识的问题,而背景知识并未在问题中明确表达.关键的挑战是如何从 ...
- 原来AI也可以如此简单!教你从0到1开发开源知识问答机器人
摘要:使用华为云EI智能机器人技术,从0到1开发一款开源知识问答机器人. 前言 最近有幸参与了开源社开源问答机器人的知识库编写,碰巧看到华为云也有类似的智能机器人,抱着试一试的心态,我开始了EI智能机 ...
- 利用HBuilderX制作手机APP应用程序之知识问答
HBuilderX的功能十分强大,利用它制作手机APP极其简单,步骤如下: 新建项目:5+app 开始编写想要的页面,以下gif图是我编写的一个手机知识问答应用程序
- 练习题 - 基于快速文本标题匹配的知识问答实现(二,实现篇)
承接练习题 - 基于快速文本标题匹配的知识问答实现(一,基础篇),前篇主要把qdr这个项目解剖了一下,现在开始应用做一下问答. 可以看到qdr这个项目的特点是:可以快速比对两个文本之间的相似性,而且计 ...
最新文章
- 用一个比喻说明项目里各个成员的角色
- static_cast、dynamic_cast、const_cast和reinterpret_cast总结
- 服务器压力测试_魔兽世界怀旧服:美服18日开放安其拉开门测试,P5阶段即将来临...
- P3899 [湖南集训]谈笑风生 主席树解决二维数点
- vue移动端项目缓存问题实践
- leetcode739 每日温度
- Only Link: Inheritance — private and protected inheritance in c++
- 大数据从业10年,从一个BI项目的失败,看到数据治理的重要性
- snmp trap 如何在浏览器中_SNMP Trap的功能介绍
- mongodb 集群shard_MongoDB 分片集群环境搭建
- Python: hashlib库、sha256、md5
- 图像特效---LOMO Filter
- matlab怎么定义矩阵变量_MATLAB01:基本的数学运算与矩阵运算
- 双显示器如何调节亮度
- MIT6_0002F16_ProblemSet4
- Intel graphics HD 4600 核芯显卡 对比 nVIDIA Geforce GTX 750 2GB GDDR5 独立显卡
- 哈哈,美食是生活的重要组成啊,自己烹调鲍鱼
- Hashtable用法
- SQL存储过程与函数
- HTTP状态码是什么,有什么用?
热门文章
- python建立数据库和基本表_python基础 — 链接 Mysql 创建 数据库和创表
- python工厂模式 取代__init___浅析Python 简单工厂模式和工厂方法模式的优缺点
- python如何全网爬取_如何通过Python爬取互联网
- java中子线程与主线程通信_Android笔记(三十二) Android中线程之间的通信(四)主线程给子线程发送消息...
- mysql 值到99999后不增值了_MySQL必知必会3
- ping端口_干货分享:shell脚本批量telnet ip 端口
- jquery根据value值php,表单php传值后jquery清除表单某项value问题
- session的removeattribute移除一个不存在的属性会怎么用_公认峡谷机制最完美,对线几乎无解,夏侯惇高端局为何火不起来?...
- Centos7.x 网卡启动报错(Failed to start LSB: Bring up/down networking)
- C语言编程基础 打印图形