`
lsw521314
  • 浏览: 6782 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Hibernate知识问答

    博客分类:
  • ssh*
阅读更多
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)中进行的,这样就可以隔离开不同的操作(甚至包括只读操作)。

分享到:
评论

相关推荐

    SpringMVC hibernate 做的问答系统,界面比较简陋,初学的可以借鉴一下

    这是一个基于SpringMVC和Hibernate框架构建的简单问答系统,适合初学者学习和借鉴。这个系统可能没有华丽的界面,但其核心在于后端逻辑的实现,对于理解如何将这两个技术结合来处理Web应用中的数据交互有很好的示例...

    知识问答知识提问.zip

    《Java知识问答系统设计与实现》 在当前的信息化时代,知识问答系统已经成为了人们获取信息、交流知识的重要平台。本项目"知识问答知识提问.zip"提供了一套完整的Java源码,适用于毕业设计或课程设计,它能帮助学生...

    加速知识积累的问答网站设计与实现-学位论文.doc

    "加速知识积累的问答网站设计与实现" 本资源总结了一个问答网站的设计与实现,该网站旨在加速知识积累,结合了一些问答网站的功能,进行了分析设计,实现了用户注册登录、提出问题、回答问题、查询问答记录等基础...

    2010年最完整SSH面试题(Struts+Spring+Hibernate面试题问答23题,选择30题) 问答23题,选择30题(附答案)

    SSH,即Struts、Spring和Hibernate,是Java Web开发中常用的三大框架,分别负责MVC模式中的表现层、业务层...在面试中,深入理解这些知识点并能结合实际项目经验进行阐述,将有助于展示你的专业技能和解决问题的能力。

    2012年最权威,最完整SSH面试题(Struts+Spring+Hibernate面试题问答23题,选择30题) 问答23题,选择30题(附答案)

    ### SSH (Struts + Spring + Hibernate) 面试题知识点详解 #### 1. Hibernate 工作原理及其重要性 **原理:** 1. **读取并解析配置文件:** Hibernate 使用配置文件来指定数据库连接信息、事务管理策略等设置。 2....

    hibernate参考手册中文版

    ### Hibernate参考手册中文版知识点概览 #### 一、Hibernate简介与版本说明 - **版本信息**:本书基于Hibernate 3.1.2版本编写,适用于该版本及其以下版本的学习和参考。 - **功能概述**:Hibernate是一款开源的...

    Y2-JAVA-1使用Hibernate开发租房系统内部考试笔试跟机试荅案

    - "Hibernate内部测试-笔试试卷.doc":这份文档很可能是笔试部分的试题集,可能包含关于Hibernate的基础知识问答,例如Hibernate的工作原理、配置文件的解析、实体类与数据库表的映射方式、查询语言HQL的使用等。...

    基于springboot的知识图谱的中文症状问答系统.zip

    【标题】"基于springboot的知识图谱的中文症状问答系统"揭示了这个项目的核心是构建一个使用SpringBoot框架的问答系统,该系统专注于处理中文症状的查询,利用知识图谱来提供准确的答案。SpringBoot是Java生态系统中...

    基于SSM ( Spring + SpringMVC + Mybatis)开发的知识问答社区+源代码+文档说明

    Titan社区(Titan Community),基于SSM ( Spring + SpringMVC + Mybatis)开发的知识问答社区 ## **项目介绍** Titan社区(Titan Community)是我在上个星期学习与研究完 **SSM ( Spring + SpringMVC + ...

    问答系统基于java web

    【标题】"问答系统基于Java Web"所涉及的知识点主要集中在构建一个基于Java技术栈的Web应用程序,特别是后端架构和前端开发模式。这个系统利用了Spring、Struts和Hibernate(SSH)三大框架来构建后端逻辑,同时采用...

    J2EE大程-->类似百度知道的问答系统

    在这个项目中,我们讨论的是一个基于J2EE的问答系统,该系统借鉴了百度知道的模式,旨在实现用户提问、回答、投票等功能,为用户提供知识分享和交流的平台。 SSH框架是Spring、Struts和Hibernate三个开源项目的组合...

    毕业设计-JSP基于SSH的网络在线问答系统

    本项目是一个基于JSP(JavaServer Pages)技术,并结合Struts、Spring、Hibernate(简称SSH)三大框架构建的网络在线问答系统。这个系统为用户提供了一个互动交流的平台,允许用户提问、回答问题以及对问题进行评论...

    杭州朗慧witask<互动问答系统>项目源码

    该项目类似于百度知道、雅虎知识堂、SOSO问问等目前最流行的问答平台。 杭州朗慧知道——互动问答系统,采用目前最流行的SSH(spring2.0 + struts1.2 + hibernate3.2) + AXAJ + DWR + CSS + DIV等技术。 主要包括...

    JSP基于SSH2的网络在线问答系统.rar

    JSP基于SSH2的网络在线问答系统是一个针对计算机专业学生的项目源码包,它采用了Java Server Pages (JSP) 技术构建前端视图,结合了强大的Spring框架、用于安全服务的Spring Security和数据持久化的Hibernate(即SSH...

    基于Java EE的校园问答系统的设计与实现.pdf

    总结起来,基于Java EE的校园问答系统设计与实现,运用了Struts和Hibernate技术,结合MVC架构,旨在解决大学生在海量信息中快速获取校园相关知识的难题,打造一个高效、互动的在线问答平台。这样的系统具有高度的...

    java问答式教程

    在本《Java 问答式教程...以上只是Java语言学习的部分关键知识点,实际的《Java 问答式教程》将涵盖更多具体问题和实战案例,帮助读者在实践中提升技能。无论你是初学者还是有经验的开发者,都能从中找到你需要的答案。

    JSP基于SSH2的网络在线问答系统.zip

    【标题】"JSP基于SSH2的网络在线问答系统"是一个使用Java服务器页面(JSP)技术构建的网络应用程序,它结合了Struts、Spring和Hibernate这三个框架,也就是所谓的SSH2框架集成。这个系统旨在提供一个平台,让用户...

    jsp基于SSH2的网络在线问答系统.zip

    本项目"jsp基于SSH2的网络在线问答系统"利用这三个框架的优势,构建了一个功能完善的问答平台,让用户能够实时提问、回答和交流知识。 **1. Struts2框架** Struts2是MVC(Model-View-Controller)设计模式的实现,...

Global site tag (gtag.js) - Google Analytics