column="customer_id"/>
A.inverse属性不可以设置为false
B.cascade属性不可设置为true;;;
C.class="com.scce.pojo.Order"应为type="com.scce.pojo.Order";;;
D.column属性不可再节点内设置
执行下面的hql查询,关于返回值的说法,正确的是()。
selectusername,useridfromUseàquery.list():
listList
selectu.username,u.userid
fromcom.scce.pojo.Useru
whereuisnotnull
A.语法错误,不能执行
B.返回一个类型为List的实例…
C.返回一个数组
D.当返回结果只有一条时,返回一个数组
7.一般情况下,关系数据模型与对象模型之间有哪些匹配关系(ACD)。
[选三项]
A.表对应类…
B.记录对应类//对象
C.表的字段对应类的属性;;;
D.表之间的参考关系对应类之间的依赖关系;;;
8.以下关于SessionFactory的说法,正确的是()。
[选两项]
A.对于每个数据库事务,应该创建一个SessionFactory对象
B.一个SessionFactory对象对应一个数据库存储源;;;
C.SessionFactory是重量级的对象,不应该随意创建。
如果系统中只有一个
数据库存储源,只需要创建一个;;;;
D.SessionFactory的load()方法用于加载持久化对象
9.Customer类中有一个Set类型的orders属性,用来存放Order订单对象,
在Customer.hbm.xml
Customer.hbm.xml
文件中,用哪个元素映射orders属性()。
[选两项]
A.;;;
B.;;;;
C.
D.
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\");
mit();
执行以上程序,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它是动词,过程
mit();//line3(持久化等价于保存到硬盘)
session1.close();//line4
A.line1
B.line2;;;;
C.line3
D.line4
16.对于以下程序,Customer对象在第几行变为游离状态()。
Customercustomer=newCustomer();
customer.setName(\"Tom\");
Sessionsession1=sessionFactory.openSession();
Transactiontx1=session1.beginTransaction();//line1
session1.save(customer);//line2
mit();//line3
session1.close();//line4
A.line1
B.line2
C.line3
D.line4;;;;
17.以下哪一种检索策略利用了外连结查询()。
A.立即检索
B.延迟检索
C.迫切左外连结检索;;
D.迫切右外连结检索
18.假设对Customer类的orders集合采用延迟检索策略,编译或运行以下程序,会出现()。
Sessionsession=sessionFactory.openSession();
tx=session.beginTransaction();
Customercustomer=(Customer)session.get(Customer.class,newLong
(1));
mit();
session.close();
IteratororderIterator=customer.getOrders().iterator();
A.编译出错
B.编译通过,正常运行,不显示任何信息
C.编译通过,正常运行,并显示出结果
D.编译通过,但运行时抛出异常;;;
19.POJO是()。
A.PlainOldJavaObject;;;
B.ProgrammingObjectJavaObject
C.PageOldJavaObject
D.PlainObjectJavaOld
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(组件)
B.Element
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.控制器对象
D.ActionForm
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(…)
D.count(?
)
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){
SessionFactorysf=newConfigration().configure().buildSessionFactory();
Sessionsession=sf.openSession();
Medalmedal=newMedal();
medal.setOwner(“totong”);
medal.setType(“Goldmedal”);
session.save(user);
session.close();
}
A.配置文件配置有误
B.没有在配置文件中包含对映射文件的声明
C.配置文件配置有误
D.没有对持久化操作捕捉异常
E.没有开启事务;;
44.下列属于多对一关系的是()。
A.书和作者
B.手机和生产厂家
C.用户和发布的出租信息
D.士兵和班长;;
45.已知wage.getItem().size()的值是1。
要想使执行session.update(wage)
时自动执行session.update(wage.getItems().get(0)),必须配置()。
A.…
B.…
C.…
D.…;;;
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)如以下这样来建模:
publicclassPerson{
privatejava.util.Datebirthday;
privateNamename;
privateStringkey;
publicStringgetKey(){
returnkey;
}
privatevoidsetKey(Stringkey){
this.key=key;
}
publicjava.util.DategetBirthday(){
returnbirthday;
}
publicvoidsetBirthday(java.util.Datebirthday){
this.birthday=birthday;
}
publicNamegetName(){
returnname;
}
publicvoidsetName(Namename){
this.name=name;
}
......
......
}
publicclassName{
charinitial;
Stringfirst;
Stringlast;
publicStringgetFirst(){
returnfirst;
}
voidsetFirst(Stringfirst){
this.first=first;
}
publicStringgetLast(){
returnlast;
}
voidsetLast(Stringlast){
this.last=last;
}
publicchargetInitial(){
returninitial;
}
voidsetInitial(charinitial){
this.initial=initial;
}
}
现在,姓名(Name)是作为人(Person)的一个组成部分。
需要注意的是:
需要对姓名的持久化属性定义getter和setter方法,但
是不需要实现任何的接口或申明标识符字段。
以下是这个例子的Hibernate映射文件:
--classattributeoptional-->
人员(Person)表中将包括pid,birthday,initial,first和last等字段。
就像所有的值类型一样,Component不支持共享引用。
换句话说,两个人可能重名,但是两个person对象应该包含两个独立的name对象,只不过是具有“同样”的值。
Component的值为空从语义学上来讲是专有的(adhoc)。
每当重新加载一个包含组件的对象,如果component的所有字段为空,那么将Hibernate将假定整个component为空。
对于绝大多数目的,这样假定是没有问题的。
Component的属性可以是Hibernate类型(包括Collections,many-to-one关联,以及其它Component等等)。
嵌套Component不应该作为特殊的应用被考虑(Nestedcomponentsshouldnotbeconsideredanexoticusage)。
Hibernate趋向于支持设计细致(fine-grained)的对象模型。
元素还允许有子元素,用来表明component类中的一个属性返回包含它的实体的引用。
>
--referencebacktothePerso