Hibernate基础考试题Word文档格式.docx
《Hibernate基础考试题Word文档格式.docx》由会员分享,可在线阅读,更多相关《Hibernate基础考试题Word文档格式.docx(19页珍藏版)》请在冰点文库上搜索。
2.下面关于Hibernate的说法,错误的是()。
C
A.Hibernate是一个“对象-关系映射”的实现
B.Hibernate是一种数据持久化技术
C.Hibernate是JDBC的替代技术…
D.使用Hibernate可以简化持久化层的编码
3.Hibernate配置文件中,不包含下面的(AB)。
[选两项]
A.“对象-关系映射”信息…
B.实体间关联的配置…
C.show_sql等参数的配置
D.数据库连接信息
4.在Hibernate关系映射配置中,inverse=true属性的含义是(C)。
A.定义在<
one-to-many>
节点上,声明要负责关联的维护
B.声明在<
set>
节点上,声明要对方负责关联的维护…
C.定义在<
节点上,声明对方要负责关联的维护
D.声明在<
5.在使用了Hibernate的系统中,要想在删除某个客户数据的同时删除该客户对应的所有订单数据,
下面方法可行的是(B)。
save-update
属性为cascade配置客户和订单关联的A.
B.配置客户和订单关联的cascade属性为all…
C.设置多对一关联的inverse属性为true
D.设置多对一关联的inverse属性为false
6.下面一对多关联的配置中,存在哪些错误,下列选项判断正确的()。
[选两项]BC
<
setname=ordersinverse=
alsecascade=rue>
key>
<
column>
/>
/key>
one-to-manyclass=com.scce.pojo.Order
column=customer_id/>
/set>
falseA.inverse属性不可以设置为true;
;
B.cascade属性不可设置为type=com.scce.pojo.Order;
C.汣獡?
捜浯献捣?
潰潪伮摲牥应为<
节点内设置D.column属性不可再)。
执行下面的hql查询,关于返回值的说法,正确的是(
List<
string[]>
selectusername,useridfromUse?
query.list():
list
selectu.username,u.userid
fromcom.scce.pojo.Useru
uisnotnull
where
语法错误,不能执行A.的实例…B.返回一个类型为ListC.返回一个数组D.当返回结果只有一条时,返回一个数组。
7.ACD)一般情况下,关系数据模型与对象模型之间有哪些匹配关系(][选三项表对应类…A.
//对象记录对应类B.
表的字段对应类的属性C.
D.表之间的参考关系对应类之间的依赖关系]
)。
[选两项的说法,正确的是(以下关于8.SessionFactory对于每个数据库事务,应该创建一个A.SessionFactory对象;
对象对应一个数据库存储源SessionFactory一个B.
C.SessionFactory是重量级的对象,不应该随意创建。
如果系统中只有一个
数据库存储源,只需要创建一个;
D.SessionFactory的load()方法用于加载持久化对象
9.Customer类中有一个Set类型的orders属性,用来存放Order订单对象,
在Customer.hbm.xml
Customer.hbm.xml?
文件中,用哪个元素映射orders属性()。
A.<
B.<
C.<
many-to-one>
D.<
property>
10.<
元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade属性应该
取什么值()。
A.none
B.save
C.delete
D.save-update;
11.以下哪些属于Session的方法()。
[选三项]
A.load();
//delete()get()close()isOpen()
B.save()…
C.open()
D.saveOrUpdate();
12.以下程序的打印结果是()。
tx=session.beginTransaction();
//开始事务
Customerc1=(Customer)session.load(Customer.class,newLong
(1));
Customerc2=(Customer)session.load(Customer.class,newLong
(1));
System.out.println(c1==c2);
mit();
session.close();
A.运行出错,抛出异常
B.打印false
C.打印true;
编译出错D.
13.tx=session.beginTransaction();
Customercustomer=(Customer)session.load(Customer.class,
newLong
(1));
customer.setName(\Jack\);
customer.setName(\Mike\);
执行以上程序,Hibernate需要向数据库提交几条update语句()。
A.0
B.1;
C.2
D.3
14.在持久化层,对象分为哪些状态()。
A.瞬时(Transient)(临时)
B.新建(New)
C.游离(Detached)(脱管)
D.持久(Persistent)
15.对于以下程序,Customer对象在第几行变为持久化状态()。
Customercustomer=newCustomer();
customer.setName(\Tom\);
Sessionsession1=sessionFactory.openSession();
Transactiontx1=session1.beginTransaction();
//line1
session1.save(customer);
//line2它是动词,过程
//line3(持久化等价于保存到硬盘)
session1.close();
//line4
A.line1
B.line2;
C.line3
D.line4
16.对于以下程序,Customer对象在第几行变为游离状态()。
//line2
//line3
B.line2
D.line4;
17.以下哪一种检索策略利用了外连结查询()。
A.立即检索
B.延迟检索
C.迫切左外连结检索;
D.迫切右外连结检索
18.假设对Customer类的orders集合采用延迟检索策略,编译或运行以下程序,会出现()。
Sessionsession=sessionFactory.openSession();
Customercustomer=(Customer)session.get(Customer.class,new
Long
(1));
IteratororderIterator=customer.getOrders().iterator();
编译出错A.编译通过,正常运行,不显示任何信息B.编译通过,正常运行,并显示出结果C.;
编译通过,但运行时抛出异常D.
)。
是(POJO19.
PlainOldJavaObject;
A.ProgrammingObjectJavaObjectB.
PageOldJavaObjectC.
PlainObjectJavaOldD.
]
选两项)。
[的作用是(20.POJO
对象映射数据库字段普通的A.Java数据访问B.;
对象的赋值C.
D.保存客户端对象
21.实现equals和hashCode最显而易见的作用是()。
A.比较两个对象标识符的值;
B.比较数据库的两条数据
C.比较两个组建是否部署在同一个应用服务器上
D.对象与字段的映射
22.在源代码中嵌入映射信息需要()。
A.XDoclet;
B.EJB
C.Hibernate
D.Spring
23.所有的Hibernate内建对象中,除了()都支持空(null)语义。
A.Collection;
不支持null
B.Element
C.Entity
D.NodeList
24.()元素把子对象的一些元素与父类对应的表的一些字段映射起来。
A.Component(组件)
C.Attribute
D.ActionForm
25.ORM是()。
A.对象关系映射
B.对象实体映射
C.数据传输对象
D.数据访问对象
26.JDBC可以做的三件事是()。
A.与数据库建立连接
B.通过JDBC-API向数据库发送SQL语句
C.通过JDBC-API执行SQL语句
D.进行实体关系的映射
27.ORM的好处有()。
A.能进行关系对象的映射
B.具有控制器功能
能在服务器端保存客户端状态C.
D.向DTO一项能传递数据
28.常见的实体域对象是()。
A.主动域对象(EJB)
B.JavaBean对象(也称为POJO,PlainOldJavaObject)
C.控制器对象
29.常见的三层分别是()。
A.应用层
B.业务逻辑层
C.数据访问层
D.通讯层
30.对象(实体的实例)对一个特定的Session来说,要么是一个____对象,
要么是____对象()。
A.瞬时
B.持久化
C.控制器
D.数据传输对象
31.如果你已知某个实例的持久化标识,你可以使用Session的()方法
来获取它。
A.load()
B.loadAll()
C.getAllData()
D.init()
32.如果你不能确定你要寻找的对象的持久化标识符,那么你需要使用查询,
使用Session的____方法()。
A.createQuery()
B.query()
C.queryAll()
D.queryObject()
33.HQL不支持聚合函数有()。
HQL中聚合函数,不能使用?
占位,用*或类具体字段名
A.count(*)
B.avg(…)//…代表字段名
C.count(…)
count(?
)
D.
34.____和____子句都不支持算数表达式()。
A.groupby;
B.orderby;
C.computeby
D.insertby
35.除了____和____外,查询语句都是对大小写不敏感的()。
A.Java类;
B.POJO类;
C.映射文件
D.属性名称
36.fromCatascat,不仅仅返回____的实例,而且还返回____的实例()。
A.Cat;
B.Cat父类
C.Cat子类;
D.Cat实现接口
37.____代表升序,____代表降序()。
A.asc
B.ansi
C.desc
D.description
38.对原生SQL查询的控制是通过()接口进行的。
A.SQLQuery;
B.Session
C.List
D.Query
39.假设实体映射时有一个()的关联指向另外一个实体,在查询时必须也
返回那个实体,否则会导致发生一个”columnnotfound”的数据库错误。
A.many-to-one
B.many-to-many
C.one-to-many
D.one-to-one;
40.在Hibernate中,关于数据库的方言,下面说法正确的是()。
可以不写数据库方言A.
B.数据库方言没有作用,可以随便写
C.有通用的数据库方言可以使用
D.数据方言对应于每个数据库,主要用于产生SQL语句;
41.下面不属于持久化的是()。
A.把对象转换称字符串的形式通过网络传输,在另一端接收到这个字符串后
能把对象还原出来;
B.把程序数据从数据库中读出来
C.从XML配置文件中读取程序的配置信息
D.把程序数据保存为文件
42.下面不是Hibernate映射文件中包含的内容是()。
A.数据库连接信息;
B.Hibernate属性参数;
C.主键生成策略
D.属性数据类型
43.下面的程序执行后没有报错,但数据总保存不到数据库,最可能的原因是()。
publicstaticvoidimain(String[]args){
SessionFactory
sf=new
Configration().configure().buildSessionFactory();
Sessionsession=sf.openSession();
Medalmedal=newMedal();
medal.setOwner(“totong”);
medal.setType(“Goldmedal”);
session.save(user);
A.配置文件配置有误
B.没有在配置文件中包含对映射文件的声明配置文件配置有误C.D.没有对持久化操作捕捉异常;
E.没有开启事务44.下列属于多对一关系的是(。
)书和作者A.
手机和生产厂家B.
C.用户和发布的出租信息
D.士兵和班长;
45.已知wage.getItem().size()的值是1。
要想使执行session.update(wage)
时自动执行session.update(wage.getItems().get(0)),必须配置()。
setname=”items”inverse=”true”cascade=”none”>
…<
set
name=”items”
inverse=”false”
cascade=”none”>
setname=”items”inverse=”true”cascade=”all”>
cascade=”save-update”>
46.已知系统中的tbl_user表对应的实体类是User,下列HQL语句中正确的是()。
A.fromUser;
B.select*fromtbluser
C.selectUserfromUser
D.fromUseruwhereu.uname=”15”;
47.在JAVA中,关于属性文件,下列选项中的说法正确的是()。
A.属性文件以名称和值的形式保存信息;
B.属性文件不能写中文
C.属性文件中能保存各种数据类型的信息
D.属性文件的文件扩展名是.xml
48.下面说法正确的是()。
A.HQL只用于查询数据
B.HQL具备更强大的功能,实体的更新与删除即其主要特征之一;
C.delete与update子句为Hibernate2引入的新特性
D.delete与update子句为Hibernate3引入的新特性;
49.VO与PO的主要区别在于()。
A.VO是相对独立的实体对象,处于非管理状态;
B.PO是由Hibernate纳入容器管理的对象,代表与数据库某条记录对应的实体…
C.如果一个PO与其对应的Session实例分离,那么它将由PO变成VO…
D.处于Model层的PO能被传到其他层
HQL语法结构(update/delete子句为Hibernate3引入的新特性)
[select/update/delete]
[from...]
[where...]
[groupby...[having...]]
[orderby...]
Component是一个被包含的对象,它作为值类型被持久化,而非一个
被引用的实体。
“component(组件)”这一术语指的是面向对象的合
成概念(而并不是系统构架层次上的组件的概念)举个例子,
你可以对人(Person)如以下这样来建模:
returnbirthday;
publicvoidsetBirthday(java.util.Datebirthday){
this.birthday=birthday;
publicNamegetName(){
returnname;
publicvoidsetName(Namename){
this.name=name;
}
......
publicclassName{
charinitial;
Stringfirst;
Stringlast;
publicStringgetFirst(){
returnfirst;
现在,是作为的一个组成部分。
需要注意的是:
(Person)人姓名(Name)需要对的持久化属性定义getter和setter方法,但姓名是不需要实现任何的接口或申明标识符字段。
以下是这个例子的Hibernate映射文件:
classname=eg.Persontable=person>
idname=Keycolumn=pidtype=string>
generatorclass=%uuid.hex\/>
/id>
propertyname=irthdaytype=date\/>
componentname=Nameclass=eg.Name>
!
--class
attributeoptional-->
<
propertyname=initial\/>
propertyname=
irst\/>
propertyname=last\/>
/component>
/class>
人员(Person)表中将包括,,,和lastinitialpidbirthdayfirst等字段。
就像所有的值类型一样,Component不支持共享引用。
换句话说,两个人可能重名,但是两个person对象应该包含两个独立的name对象,只不过是具有“同样”的值。
Component的值为空从语义学上来讲是专有的(adhoc)。
每当重新加载一个包含组件的对象,如果component的所有字段为空,那么将Hibernate将假定整个component为空。
对于绝大多数目