2022年Hibernatej框架面试题 .pdf

上传人:C****o 文档编号:35800389 上传时间:2022-08-23 格式:PDF 页数:38 大小:6.70MB
返回 下载 相关 举报
2022年Hibernatej框架面试题 .pdf_第1页
第1页 / 共38页
2022年Hibernatej框架面试题 .pdf_第2页
第2页 / 共38页
点击查看更多>>
资源描述

《2022年Hibernatej框架面试题 .pdf》由会员分享,可在线阅读,更多相关《2022年Hibernatej框架面试题 .pdf(38页珍藏版)》请在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 是 Sun 公司在 Java EE 5 规范中提出的 Java 持久化接口。主要是为了解决ORM 框架

2、的差异,它的出现在某种程度上能够解决目前 ORM 框架之间不能够兼容的问题,对开发人员来说,能够更好的在JPA 规范下进行系统开发。事实上, JPA 并不是一项技术,而是一种标准,因为JPA 只是一套接口,本身不能完成任何事情。 JPA 只是规范了 Java 持久化的官方标准。下图说明了JPA 在系统架构中的作用,使用 JPA 持久化对象,而不是依赖于某一个ORM 框架:名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 1 页,共 38 页 - - - - - - -

3、 - - 学而不思则惘,思而不学则殆2.JPA 主要技术JPA 的宗旨是为 POJO 提供持久化标准规范,由此可见,经过这几年的实践探索,能够脱离容器独立运行,方便开发和测试的理念已经深入人心了。Hibernate3.2 、TopLink 10.1.3 以及 OpenJPA 都提供了 JPA 的实现。JPA 的总体思想和现有Hibernate 、TopLink、JDO 等 ORM 框架大体一致。总的来说,JPA 包括以下 3 方面的技术:2.1 ORM 映射元数据JPA 支持 XML 和 JDK5.0 注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中

4、;2.2 API 用来操作实体对象,执行CRUD 操作,框架在后台替我们完成所有的事情,开发者从繁琐的 JDBC 和 SQL 代码中解脱出来。2.3 查询语言这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的 SQL 语句紧密耦合。3.JPA 优势3.1 标准化JPA 是 JCP 组织发布的 Java EE 标准之一,因此任何声称符合 JPA 标准的框架都遵循同样的架构,提供相同的访问API,这保证了基于JPA 开发的企业应用能够经过少量的修改就能够在不同的 JPA 框架下运行。容器级特性的支持: JPA 框架中支持大数据集、事务、并发等容器级事务,这使

5、得 JPA 超越了简单持久化框架的局限,在企业应用发挥更大的作用。3.2 简单方便JPA 的主要目标之一就是提供更加简单的编程模型:在JPA 框架下创建实体和创建Java 类一样简单,没有任何的约束和限制,只需要使用 javax.persistence.Entity进行注名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 2 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆释,JPA 的框架和接口也都非常简单,没有太多特别的规则和设计模式

6、的要求,开发者可以很容易的掌握。 JPA 基于非侵入式原则设计,因此可以很容易的和其它框架或者容器集成。3.3 查询能力JPA 的查询语言是面向对象而非面向数据库的,它以面向对象的自然语法构造查询语句,可以看成是 Hibernate HQL 的等价物。 JPA 定义了独特的 JPQL(Java Persistence Query Language ),JPQL 是 EJB QL 的一种扩展,它是针对实体的一种查询语言,操作对象是实体,而不是关系数据库的表,而且能够支持批量更新和修改、JOIN、GROUP BY 、HAVING 等通常只有 SQL 才能够提供的高级查询特性,甚至还能够支持子查询。

7、3.4 高级特性JPA 中能够支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,这样的支持能够让开发者最大限度的使用面向对象的模型设计企业应用,而不需要自行处理这些特性在关系数据库的持久化。4.EJB3 与 JPA 的关系由于历史的原因, EJB 3 与 JPA 有着藕断丝连的关系。 EJB 2.X 中,EJB 有三种类型的Bean ,分别是会话 Bean(Session Bean )、实体 Bean(Entity Bean )和消息驱动 Bean(Message Driven Bean )。随着 EJB3 规范的推出 ,EJB 中的实体 Bean(Enity Bean) 逐渐被

8、 JPA 规范所替代 ,这也是为什么 JPA 的规范会包含在 EJB3 的规范中的原因 . 但 JPA 不仅能够在 EJB 环境中使用 ,也能够在 J2SE 的环境中使用 ,相对于 EJB2.X 的实体 BEAN, 使用的范围更广。总之,简单的说 ,JPA 虽然出自 EJB3,但是其使用的范围却大于EJB3,不仅可以在JavaEE5 中,也可以在 JavaSE 的环境中 ,如图所示 EJB3 和 JPA 的关系:名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 3 页

9、,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆EJB:全名 EnterpriseJavaBean。你可以理解为它就是一个 JavaBean,但是是一个很牛的JavaBean。等等,你问我什么是JavaBean,晕。 JavaBean 是可重用的组件,通常是为了解决某一特定问题而编写的业务类组件。企业级JavaBean,一听就是一个很牛的名词。它具体牛在什么地方呢,牛在它能够解决分布式开发事务处理等。靠,你又问我什么是你可以理解为,多台服务器共同运行一个程序。 EJB 就是为了这个而存在的。在Java EE 5 里, EJB 的版本是3.0JPA:Java EE

10、5 的产物之一。二.什么是元数据 ? 元数据就是用来定义数据的数据。比如,有一条学生信息记录,其中包括字段姓名(name)、年龄(age)、性别( male)、班级( class)等,那么name、age、male、class 就是元数据。通过它们的描述,一条关于学生信息的数据记录就产生三.Hibernate 锁机制一:什么是锁?需要一些机制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,也就是所谓的“ 锁” ,即给我们选定的目标数据(对象)上锁,使其无法被其他程序修改二: hibernate中的锁? Hibernate支持两种锁机制- “ 悲观锁( Pessimistic Lock

11、ing)” - “ 乐观锁( Optimistic Locking) ” 。三:怎样使用锁?悲观锁:悲观锁就像他的名字一样,他认为每次他在操作数据库的时候,其他客户端程序也在执行这同样的操作。因此,对操作的数据进行锁定,直到自己的操作完成后解除锁定。所以, 悲观锁的实现一般都是依赖数据库本身的锁机制。乐观锁:相对于悲观锁来说,乐观锁提供了更宽松的加锁机制。他乐观的认为他在操作数据的时候,很少发生与之相同的情况。他不在数据库层次上进行锁定。为了维护正确的数据,乐观锁应用程序上的逻辑实现数据版本号控制解决。数据版本号:是为了维护数据库增加一个版本标识,一般情况是通过给数据库表增加一个“versio

12、n ” 字段来实现。悲观锁的实现是基于数据库的锁机制完成的,可以使用Query或 Criteria的 setLockMode()方法来设定要锁定的数据和锁定的模式。例如:Query query=session.createQuery( from User u where u.name=kitty ); 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 4 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆query.setLockMode

13、(c,LockMode.UPGRADE); List list=query.list(); 代码送的别名为“u” 的 User对象进行锁定,在hibernate中加锁模式有:- LockMode.NONE : 无锁机制- LockMode.WRITE :Hibernate在 Insert和 Update记录的时进行锁定- LockMode.READ : Hibernate在读取记录时进行锁定- LockMode.UPGRADE :利用数据库的for update子句加锁。- LockMode. UPGRADE_NOWAIT :Oracle的特定实现,利用Oracle的 for update n

14、owait子句实现加锁注意 : 只有在查询开始之前(也就是Hiberate 生成 SQL 之前)设定加锁,才会真正通过数据库的锁机制进行加锁处理,否则,数据已经通过不包含for update 子句的 Select SQL加载进来,所谓数据库加锁也就没有意义了。乐观锁:乐观锁依靠数据版本记录机制实现- 为数据增加一个版本标识, 增加一个 version字段- 读取数据时,将版本号一同读出- 更新时,版本号加一- 将提交数据的版本与数据库表对应记录的当前版本信息进行比对- 如果提交的数据版本号大于数据库表当前版本号,则予以更新,否则认为是过期数据首先:为持久类增加一个version属性及相应方法。

15、接着为 class 描述符添加optimistic-lock属性:例如: optimistic-lock属性有如下可选取值:- none 无乐观锁- version 通过版本机制实现乐观锁(官方推荐 ) - dirty 通过检查发生变动过的属性实现乐观锁名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 5 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆- all 通过检查所有属性实现乐观锁然后:添加一个Version属性描述符 名师归

16、纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 6 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆四.Hibernate 缓存机制名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 7 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆名师归纳总结 精品学习资料 - - - - - -

17、 - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 8 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 9 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - -

18、- - - - - - - - - - - - 第 10 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 11 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆hibernate的查询缓存是主要是针对普通属性结果集的缓存,而对于实体对象的结果集只缓存id 。在一级缓存 , 二级缓存和查询缓存都打开的情况下作查询操作时这样的:查询普通属性,会先到查询缓存中取

19、,如果没有,则查询数据库;查询实体,会先到查询缓存中取id ,如果有,则根据id 到缓存 ( 一级 / 二级 )中取实体,如果缓存中取不到实体,再查询数据库,此时查就是一个N+1 的效果。和一级/ 二级缓存不同,查询缓存的生命周期,是不确定的,当前关联的表发生改变时,查询缓存的生命周期结束名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 12 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆五. Hibernate 批处理名师归纳总结

20、精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 13 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 14 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -

21、精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 15 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆六. 什么是 ORM 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 16 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆简单理解 Hibernate三种状态的概念及互相转化名师归纳总结 精品学习资料 - - - - - - - - - - - - - -

22、-精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 17 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆什么是脏数据脏数据并非废弃或者无用的数据,而是指一个数据对象所携带的信息发生了改变之后的状态,脏对象是属性被修改了的对象。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 18 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆什么是脏检查名师归纳总结 精品学习

23、资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 19 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆get 和 load 的区别List 和 Iterator 的区别名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 20 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆名师归纳总结 精品学习资料

24、- - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 21 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆Update和 saveOrUpdate的区别名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 22 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆Query 和Criteria接口名师归纳总结 精品学

25、习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 23 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆Hibernate Criteria 的 Criterion ,Projection ,Restrictions 等条件设置名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 24 页,共 38 页 - - - - - - - -

26、 - 学而不思则惘,思而不学则殆名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 25 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 26 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆名师归纳总结 精品学习资料 - - -

27、- - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 27 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 28 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料

28、 - - - - - - - - - - - - - - - 第 29 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 30 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 31

29、页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 32 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆注解:名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 33 页,共 38 页 - - - - - - - - - 学而不思则惘

30、,思而不学则殆名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 34 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 35 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆名师归纳总结 精品学习资料 - - - - - - - -

31、 - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 36 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 37 页,共 38 页 - - - - - - - - - 学而不思则惘,思而不学则殆MVC 和三层的区别Model 1 和 model 2 的区别名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 38 页,共 38 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁