Hibernate 考试题.docx
《Hibernate 考试题.docx》由会员分享,可在线阅读,更多相关《Hibernate 考试题.docx(5页珍藏版)》请在冰豆网上搜索。
Hibernate考试题
Hibernate考试题
一.填空题:
1.对象关系映射(ORM)的基本原则是:
类型(class)映射(),属性(property)映射(),关联关系(association)映射(),类型的实例或对象(instance|object)映射()。
2.Hibernate应用通常由四个部分组成,它们是使用HibernateAPI的程序和(、、)。
3.Hibernate应用缺省的XML格式的配置文件名是(),放置在()下;该配置文件的根元素是(),根元素的子元素是();配置数据库方言的属性名是();配置数据库连接的四种属性名是(、、、);配置映射资源的元素是(),如果映射用XML文件表示,用属性()表示,如果映射用标注(annotation)表示,用属性()表示。
4.HibernateXML映射文件的根元素是();此根元素下主要的子元素是();映射实体类中表示主键的属性的元素是();映射实体类中普通属性的元素是();映射一对一关联关系的元素是();映射多对一关联关系的元素是();表示多对多关系用集合元素,这些集合元素是();描述外键用元素();如果一个类型不是实体,但它是某个实体的组成部分,我们用元素( )表示;在描述继承关系时, 如果用一张表对应整个类层次结构子类型用元素( )描述, 如果每个子类型对应各自的表子类型用( )描述, 如果只有真正的可实例化的子类型才对应表则子类型可用元素( )或元素( )描述;代表双向关联关系时表示是否维护表中外键关系的属性名是( );代表级联操作的属性名是( );使用乐观锁时我们通常会在实体类型中增加一整型或日期型的属性, 在影射文件中用元素( 或 )描述。
5.在HibernateXML影射文件中描述主键生成机制用元素( ),其属性描述了主键的生成策略,至少写出三种策略名( 、 、 )。
6.在HibernateXML影射文件中级连操作的属性值至少写出三个( 、 、 )。
7.在HibernateXML影射文件中描述HQL语句所用元素为( )。
8. 基于Hibernate用标注(annotations)描述映射关系,实体类型用标注();实体对应的表用标注();映射实体类中表示主键的属性的标注是();映射实体类中普通属性的标注是();实体属性对应的列用标注( );应映射一对一关联关系的标注是();映射多对一关联关系的标注是();映射多对多关系的标注是();描述单一外键列用标注(),连接表用标注( );如果一个类型不是实体,但它是某个实体的组成部分,我们用标注( )来标注此类型;在描述继承关系时,用标注( ), 该标注的属性( )用来指定影射策略;代表双向关联关系时表示不维护表中外键关系的标注属性名是( );代表级联操作的属性名是( );使用乐观锁时我们通常会在实体类型中增加一整型属性, 该属性用标注( )。
9.描述主键生成机制的JPA标注是( ),Hibernate有更灵活的主键生成机制,Hibernate提供标注( )来增加此功能。
10.申明外部查询语句用标注( )。
11.用HibernateAPI编写操作实体的应用程序的六个基本步骤是(a.、b.、c.、d.、e.、f.)。
12.获得用XML描述映射的Hibernate配置的类型是( );获得用标注描述影射的Hibernate配置的类型是( );Hibernate的会话接口是( ),它由接口( )创建;Hibernate处理事务的接口是( );封装HQL的接口是( ),封装数据库SQL的接口是( ),用面向对象的方式封装查询的接口是( )。
13. Hibernate的会话接口中声明了持久化的操作:
保存一个新实体的方法是( )和( ),更新一个实体的方法是( )和( ),删除一个实体的方法是( ),合并一个实体的方法是( ),通过主键查找实体的方法是( )和( ), 获得事务处理接口的方法是( )。
14.Hibernate的会话接口同时又是一个工厂类型:
创建一个HQL查询接口的方法是( ),获得一个外部描述的查询接口的方法是( ),创建基于公式(标准)接口的方法是( ), 创建一个过滤器的方法是( )。
从这些接口中获得单一查询对象用它们的方法( ),获得多个查询对象的方法是( )和( )。
15. Hibernate对象生命周期中的三个状态是( 、 、 )。
16. 列出除Hibernate之外的三种ORM框架( 、 、 )。
二.解释作图题
1.画出Hibernate最简略的架构图(它将告诉我们Hibernate的运行机制和Hibernate应用的组成部分)
2.画出Hibernate对象的生命周期图(状态转换图)
3.给出2.中三种主要状态的定义
4.解释什么是传递持久化(transitivepersistence)
5.事务解决的主要问题是什么?
它带来的好处是什么?
在Hibernate中支持的事务处理有哪些?
6.说明什么是乐观锁和悲观锁?
在Hibernate中如何实现的?
7.在Hibernate中支持的连接查询有哪几种?
8.说明会话接口中根据主键查询唯一实体对象的两种方法的差别。
9.在Hibernate中如何处理大量的插入对象?
10.在Hibernate中如何处理大量按同一条件的更新和删除?
这种处理如何与事务配合?
有哪些注意事项?
11.Hibernate中openSession()和getCurrentSession()有什么差别?
12.说明Hibernate的局限性(附加题)
13.Hibernate应用有固定的模式,因此我们可以应用一些设计模式来简化编程。
请问我们主要采用哪些模式?
(附加题)
14.说明Hibernate应用优化的手段。
(附加题)
三.纸上程序
根据下面的图完成任务:
a.编写实体类型;
b.创建建表的SQL;
c.写出映射关系(可以在实体类上标注,也可用XML文件描述,如果用XML文件描述,可以不引入DTD或XMLSchema文档做合法性检测);
d.定义数据操作接口(DAO),至少包含增加、更新、删除、按主键查询对象、根据关联关系查询对象集合的操作
e.实现d定义的数据操作接口,至少实现增加和所有的查询功能
三.上机题
对使用操作系统资源的用户进行计费的流程是:
首先在操作系统中创建新用户,并对用户进行分组以方便控制用户对资源的访问。
成为操作系统的用户可以通过各种方式使用系统的资源,如通过telnet连接到主机进行计算,通过ftp上载或下载文件等。
用户使用资源的信息会被操作系统记录到系统日志中,这些信息就成为我们计费的依据。
操作系统中的用户信息并不方便我们对计费系统进行管理,所以计费系统会将已有系统用户转换到数据库里面,新增加的用户通过我们编写的应用将新用户同时保存到数据库和操作系统文件中。
Unix系统的用户信息通常都放置在/etc/passwd文件中,每个用户的信息占用一行,文件格式如下:
username:
password:
uid:
gid:
gcos-field:
home-dir:
login-shell
登陆名(唯一):
密码:
用户id:
主组id:
gcos-field:
主目录:
登陆shell
每个用户必须且只有一个主组(primarygroup),还有可能会属于其他组(secondarygroup).组信息通常放置在/etc/group文件中,每个组信息占用一行,文件格式如下:
groupname:
password:
gid:
user-list
组名(唯一):
密码:
组id:
secondarygroup用户列表
一个组既可作为主组,也可以包含多个用户作为其他组。
用户信息中的password和gcos-field信息,组信息中的password信息在我们的系统中被忽略。
现在要建立一个用户管理系统,将操作系统中现有用户转换到数据库,新增加的用户只加入到数据库中,并可根据id查用户和组,根据名字查用户和组,根据用户名查用户所属的组,根据组名查该组的所有用户。
为方便大家编程,这里提供了用户和组的类图:
要求:
a.写出实体
b.写出建表的SQL
c.写出映射关系
d.写出hibernate的配置文件
e.写出DAO及实现
f.写出biz及实现
g.测试biz的用例
h.附加:
用Struts作为WebMVC框架,通过Web来管理用户和组