《2022年Hibernatej框架面试题.docx》由会员分享,可在线阅读,更多相关《2022年Hibernatej框架面试题.docx(75页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆一 .什么是 EJB ?JPA ?JPA 并不是一项技术,而是一种标准,由于 JPA 只是一套接口,本身不能完成任何 事情; JPA 只是规范了 Java 长久化的官方标准,期望整合 ORM 技术,实现天下归一;1. 概述第一, Sun 引入新的 JPA ORM 规范出于两个缘由:其一,简化现有 Java EE 和 Java SE 应用开发工作其二, Sun 期望整合 ORM 技术,实现天下归一JPA 全称为 Java Persistence API ,Java 长久化 API 是
2、Sun 公司在 Java EE 5 规范中提出的 Java 长久化接口;主要是为明白决ORM 框架的差异,它的显现在某种程度上能够解决目前 ORM 框架之间不能够兼容的问题,对开发人员来说,能够更好的在 JPA 规范下进行系统开发;事实上, JPA 并不是一项技术,而是一种标准,由于JPA 只是一套接口,本身不能完成任何事情; JPA 只是规范了 Java 长久化的官方标准;下图说明白JPA 在系统架构中的作 第 1 页,共 38 页 用,使用 JPA 长久化对象,而不是依靠于某一个ORM 框架:细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - - - -
3、 - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆2. JPA 主要技术JPA 的宗旨是为 POJO 供应长久化标准规范,由此可见,经过这几年的实践探究,能够脱离容器独立运行,便利开发和测试的理念已经深化人心了;10.1.3 以及 OpenJPA 都供应了 JPA 的实现;Hibernate3.2 、TopLink JPA 的总体思想和现有 Hibernate 、TopLink 、JDO 等 ORM 框架大体一样;总的来说,JPA 包括以下 3 方面的技术:2.1 ORM 映射元数据JPA 支持 XML 和
4、 JDK5.0 注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象长久化到数据库表中;2.2 API 用来操作实体对象,执行CRUD 操作,框架在后台替我们完成全部的事情,开发者从繁琐的 JDBC 和 SQL 代码中解脱出来;2.3 查询语言这是长久化操作中很重要的一个方面,通过面对对象而非面对数据库的查询语言查询数据,防止程序的 SQL 语句紧密耦合;3. JPA 优势3.1 标准化JPA 是 JCP 组织发布的 Java EE 标准之一,因此任何声称符合 JPA 标准的框架都遵循同样的架构,供应相同的拜访 API,这保证了基于 JPA 开发的企业应用能够经过少量的修
5、改就能够在不同的 JPA 框架下运行;容器级特性的支持: JPA 框架中支持大数据集、事务、并发等容器级事务,这使得 JPA 超越了简洁长久化框架的局限,在企业应用发挥更大的作用;3.2 简洁便利JPA 的主要目标之一就是供应更加简洁的编程模型:在JPA 框架下创建实体和创建Java 类一样简洁,没有任何的约束和限制,只需要使用 javax.persistence.Entity进行注 第 2 页,共 38 页 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - -
6、 - - - - - -学而不思就惘,思而不学就殆释,JPA 的框架和接口也都特别简洁,没有太多特殊的规章和设计模式的要求,开发者可以 很简洁的把握; JPA 基于非侵入式原就设计,因此可以很简洁的和其它框架或者容器集成;3.3 查询才能JPA 的查询语言是面对对象而非面对数据库的,它以面对对象的自然语法构造查询语 句,可以看成是 Hibernate HQL 的等价物; JPA 定义了特殊的 JPQL (Java Persistence Query Language ), JPQL 是 EJB QL 的一种扩展,它是针对实体的一种查询语言,操作对 象是实体,而不是关系数据库的表,而且能够支持批
7、量更新和修改、JOIN 、GROUP BY 、HAVING 等通常只有 SQL 才能够供应的高级查询特性,甚至仍能够支持子查询;3.4 高级特性JPA 中能够支持面对对象的高级特性,如类之间的继承、多态和类之间的复杂关系,这 样的支持能够让开发者最大限度的使用面对对象的模型设计企业应用,而不需要自行处理这 些特性在关系数据库的长久化;4. EJB3 与 JPA 的关系由于历史的缘由, EJB 3 与 JPA 有着藕断丝连的关系; EJB 2.X 中,EJB 有三种类型的 Bean ,分别是会话 Bean (Session Bean )、实体 Bean (Entity Bean )和消息驱动 B
8、ean(Message Driven Bean );随着 EJB3 规范的推出 ,EJB 中的实体 BeanEnity Bean 逐步被 JPA 规范所替代 ,这也是 为什么 JPA 的规范会包含在 EJB3 的规范中的缘由 . 但 JPA 不仅能够在 EJB 环境中使用 ,也能够在 J2SE 的环境中使用 ,相对于 EJB2.X 的实 体 BEAN, 使用的范畴更广;EJB3, 不仅可以在 总之 ,简洁的说 ,JPA 虽然出自 EJB3, 但是其使用的范畴却大于 JavaEE5 中,也可以在 JavaSE 的环境中 ,如下列图 EJB3 和 JPA 的关系:细心整理归纳 精选学习资料 - -
9、 - - - - - - - - - - - - - 第 3 页,共 38 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆EJB: 全名 EnterpriseJavaBean ;你可以懂得为它就是 一个 JavaBean,但是是一个很牛的 JavaBean;等等,你问我什么是JavaBean,晕; JavaBean 是可重用的组件,通常是为明白决某一特定问题而编写的业务类组件;企业级 的名词;JavaBean,一听就是一个很牛它详细牛在什么地方呢,牛在它能够解决分布式开发事务处理等;靠,你
10、又问我什么是你可以懂得为,多台服务器共同运行一个程序; EJB 就是为了这个而存在的;在 3.0JPA:Java EE 5 的产物之一;二.什么是元数据 . Java EE 5 里, EJB 的版本是元数据就是用来定义数据的数据;比如,有一条同学信息记录,其中包括字段姓名(name)、年龄(age)、性别( male)、班级( class)等,那么 name、age、male、class 就是元数据;通过它们的描述,一条关于同学信息的数据记录就产生三.Hibernate 锁机制一:什么是锁?需要一些机制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,也就是所谓 的“ 锁”,即给我们选
11、定的目标数据(对象)上锁,使其无法被其他程序修改二: hibernate 中的锁? Hibernate 支持两种锁机制- “悲观锁( Pessimistic Locking)” - “乐观锁( Optimistic Locking) ”;三:怎样使用锁?悲观锁:悲观锁就像他的名字一样,他认为每次他在操作数据库的时候,其他客户端程序也在执行这同样的操作;因此,对操作的数据进行锁定,直到自己的操作完成后解除锁定;所以, 悲观锁的实现一般都是依靠数据库本身的锁机制;乐观锁:相对于悲观锁来说,乐观锁供应了更宽松的加锁机制;他乐观的认为他在操作数据的时候,很少发生与之相同的情形;他不在数据库层次上进行锁
12、定;为了保护正确的数据,乐观锁应用程序上的规律实现数据 版本号掌握解决;数据版本号:是为了保护数据库增加一个版本标识,一般情形是通过给数据库表增加一个“ version ”字段来实现;悲观锁的实现是基于数据库的锁机制完成的,可以使用Query或 Criteria的 setLockMode方法来设定要锁定的数据和锁定的模式;例如:Query query=session.createQuery from User u where u.name=kitty ; 第 4 页,共 38 页 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - - - - - - - -
13、 - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆query.setLockModec,LockMode.UPGRADE; List list=query.list; 代码送的别名为“ u”的 User对象进行锁定,在hibernate中加锁模式有:的 for update nowait子句实现- LockMode.NONE : 无锁机制- LockMode.WRITE :Hibernate在 Insert和 Update记录的时进行锁定- LockMode.READ : Hibernate在读取记录时进行锁定- Lock
14、Mode.UPGRADE :利用数据库的for update子句加锁;- LockMode. UPGRADE_NOWAIT :Oracle的特定实现,利用Oracle加锁留意 : 只有在查询开头之前(也就是 Hiberate 生成 SQL 之前)设定加锁,才会真正通过数据库的锁机制进行加锁处理,否就,数据已经通过不包含 for update 子句的 Select SQL 加载进来,所谓数据库加锁也就没有意义了;乐观锁:乐观锁依靠数据版本记录机制实现- 为数据增加一个版本标识, 增加一个 version字段- 读取数据时,将版本号一同读出- 更新时,版本号加一- 将提交数据的版本与数据库表对应记
15、录的当前版本信息进行比对- 假如提交的数据 版本号大于数据库表当前版本号,就予以更新,否就认为是过期数据第一:为长久类增加一个 version 属性及相应方法;接着为 class 描述符添加 optimistic-lock 属性:例如: optimistic-lock属性有如下可选取值: 第 5 页,共 38 页 - - - - - - - - - - none 无乐观锁- version 通过版本机制实现乐观锁 官方举荐 - dirty 通过检查发生变动过的属性实现乐观锁细心整理归纳 精选学习资料 - - - - - - - - - - - - - - -名师归纳总结 精品学习资料 - -
16、- - - - - - - - - - - - -学而不思就惘,思而不学就殆- all 通过检查全部属性实现乐观锁然后:添加一个Version属性描述符 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 6 页,共 38 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆四.Hibernate 缓存机制 第 7 页,共 38 页 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - - - - - - - - - -
17、名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 8 页,共 38 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 9 页,共 38 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - -
18、- - -学而不思就惘,思而不学就殆细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 10 页,共 38 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 11 页,共 38 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆hibernate的查询缓存是主要是
19、针对一般属性结果集的缓存,而对于实体对象的结果集只缓存id ;在一级缓存 , 二级缓存和查询缓存都打开的情形下作查询操作时这样的:查询一般属性,会先到查询缓存中取,假如没有,就查询数据库;查询实体,会先到查询缓存中取 id ,假如有,就依据 id 到缓存 一级 / 二级 中取实体,假如缓存中取不到实体,再查询数据库,此时查就是一个 N+1 的成效;和一级 / 二级缓存不 同,查询缓存的生命周期,是不确定的,当前关联的表发生转变时,查询缓存的生命周期终止细心整理归纳 精选学习资料 第 12 页,共 38 页 - - - - - - - - - - - - - - - - - - - - - -
20、- - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆五. Hibernate 批处理 第 13 页,共 38 页 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 14 页,共 38 页 - - - - - - - - - 名师归纳总结 精品学习资料 -
21、 - - - - - - - - - - - - - -学而不思就惘,思而不学就殆细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 15 页,共 38 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆六. 什么是 ORM 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 16 页,共 38 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - -
22、- -学而不思就惘,思而不学就殆简洁懂得 Hibernate 三种状态的概念及相互转化细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 17 页,共 38 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆什么是脏数据脏数据并非废弃或者无用的数据,而是指一个数据对象所携带的信息发生了转变之后的状态,脏对象 是属性被修改了的对象;细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 18 页,共 38 页 - - -
23、 - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆什么是脏检查细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 19 页,共 38 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆get 和 load 的区分List 和 Iterator 的区分细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 20 页,共 38 页 -
24、- - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 21 页,共 38 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆Update和 saveOrUpdate的区分 第 22 页,共 38 页 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - - - - - - - -
25、- - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆Query 和Criteria接口细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 23 页,共 38 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆Hibernate Criteria 的 Criterion ,Projection ,Restrictions 等条件设置细心整理归纳 精选学习资料 - - - - - - - -
26、 - - - - - - - 第 24 页,共 38 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 25 页,共 38 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 26 页,共 38 页 - - - -
27、 - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 27 页,共 38 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 28 页,共 38 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - -
28、 - - - - - - - - -学而不思就惘,思而不学就殆细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 29 页,共 38 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 30 页,共 38 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆细心整理归
29、纳 精选学习资料 - - - - - - - - - - - - - - - 第 31 页,共 38 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 32 页,共 38 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆注解:细心整理归纳 精选学习资料 - - - - - - - - - - - -
30、- - - 第 33 页,共 38 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 34 页,共 38 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 35 页,共 38 页 - - - - - - - -
31、- 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 36 页,共 38 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 37 页,共 38 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆MVC 和三层的区分的区分Model 1 和 model 2 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 38 页,共 38 页 - - - - - - - - -