一、选择题(共25题,每题2.5分,选择一项或多项,漏选错选不得分)

1.在Hibernate中,以下关于主键生成器说法错误的是( )。

A.increment可以用于类型为long、short或byte的主键

B.identity用于如SQL Server、DB2、MySQL等支持标识列的数据库

C.sequence用于如Oracle、SQL Server等支持序列的数据库

D.native由Hibernate根据底层数据库自行判断采用何种主键生成策略,是由使用的数据库生成主键的值

2.在Hibernate中,关于脏检查和刷新缓存说法正确的是( )。

A.当事务提交时,会发生脏检查

B.Session的flush( )方法是刷新缓存的方法

C.在执行Session的commit( )方法之前不会调用Session的flush( )方法

D.编写代码时,调用commit( )方法之前要调用flush( )方法

3.使用HQL查询所有部门信息,以下正确的是( )。

A.from Dept

B.select * from cn.jbit.demo.entity.Dept

C.select Dept from cn.jbit.demo.entity.Dept d

D.select d from Dept d

4.关于Query接口的list( )和iterate( )方法,说法正确的是( )。

A.执行list( )方法,查询所有符合条件的记录

B.执行iterate( )方法,查询所有符合条件的记录

C.执行list( )方法,查询出所有符合条件的主键值

D.执行iterate ( )方法,查询出所有符合条件的主键值

5.在HQL中,关于Query接口绑定参数的方法,说法正确的是( )。

A.setParameter( )方法用于绑定任意类型的参数

B.setParameter( )有重载的方法

C.setProperties( )有重载的方法

D.setProperties( )方法用于绑定命名参数

6.在Hibernate中,关于以下映射配置,说法错误的是( )。

<hibernate-mapping>

<class name="cn.jbit.hibernatedemo.entity.Emp" table="EMP" schema="scott">

<id name="empNo" column="EMPNO" type="java.lang.Integer">

<generator class="assigned"/>

</id>

<property name="salary" type="java.lang.Double" column="SAL"/>

<property name="hireDate" type="java.util.Date"/>

<many-to-one

name="dept"

column="DEPTNO"

class="cn.jbit.hibernatedemo.entity.Dept"

/>

</class>

</hibernate-mapping>

A.此配置信息描述了cn.jbit.hibernatedemo.entity.Emp类和EMP表的映射

B.描述的是scott用户的EMP表

C.<many-to-one>标签中的name属性值dept是cn.jbit.hibernatedemo.entity.Emp类的属性名

D.<many-to-one>标签中的column属性值DEPTNO是dept表的主键名

7.在Hibernate映射文件中,关于inverse属性说法正确的是( )。

A.inverse属性有两个值:true、false

B.<many-to-one>标签有inverse属性

C.<set>标签有inverse属性

D.inverse属性用于指定维护关联关系的那一方

8.在Hibernate映射文件中,关于延迟加载配置说法错误的是( )

A.<class>标签中lazy属性可选值:true、false

B.<set>标签中lazy属性可选值:true、proxy和no-proxy

C.< set>标签中lazy属性可选值:true、extra和false

D.<many-to-one>标签中lazy属性可选值:proxy、true和false

9.在Hibernate映射文件中,关于<component>标签说法正确的是( )。

A.<component>标签用来映射组件类

B.<component>标签通过<parent>指定组件类所属的整体类

C.<component>标签通过<property>指定组件类的属性

D.<component>标签有id、name、class属性

10.MyBatis指定配置文件的根元素使用的是( )。

A.<sqlMapConfig>

B.<configuration>

C.<setting>

D.<environments>

11.在MyBatis中,ExecutorType的值包括( )。

A.ExecutorType.SIMPLE

B.ExecutorType.BATCH

C.ExecutorType.EXECUTE

D.ExecutorType.REUSE

12.关于Hibernate缓存说法错误的是( )。

A.Hibernate缓存一般分为三类:一级缓存、二级缓存和查询缓存

B.Session的evict( )方法用于从缓存中清除指定的持久化对象

C.Session的clear( )方法用于刷新缓存

D.Session的flush( )方法用于从缓存中清除所有持久化对象

13.关于HQL的连接查询,说法错误的是( )。

A.inner join 或 join用于内连接

B.inner join fetch或 join fetch用于迫切内连接

C.left outer join fetch 或 left join fetch用于迫切左外连接

D.right outer join fetch 或 right join fetch用于迫切右外连接

14.关于Hibernate批量处理数据说法正确的是( )。

A.使用HQL进行批量操作,Hibernate不支持批量插入

B.使用JDBC API进行批量操作,SQL语句中涉及的数据会被加载到Session缓存,占用内存空间

C.使用Session进行批量操作,数据会被加载到Session缓存,需注意刷新并清空缓存

D.使用Session进行批量操作,适用于需要通过代码处理的复杂的业务逻辑场景

15.关于HQL的聚合函数使用,说法正确的是( )。

A.select count(*) from Dept d用于统计部门个数

B.select sum(e.salary) from Emp e用于汇总员工工资总额

C.select max(e.hiredate) from Emp e用于找到最新入职的员工的入职时间

D.select min(e.hiredate) from Emp e用于找到最早入职的员工的入职时间

16.关于HQL子查询中,说法错误的是( )。

A.size( )或size用于获取集合中元素的数目

B.elements( )用于获取集合中的所有元素

C.any关键字用于子查询语句返回所有记录

D.in关键字与“=any”意思相同

17.关于原生SQL查询和命名查询,说法正确的是( )。

A.执行原生SQL,需使用SQLQuery对象

B.SQLQuery是一个接口,继承了Query接口

C.Hibernate支持在映射文件中定义字符串形式的查询语句,这样的语句是命名查询语句

D.命名查询语句只能是HQL语句,不能是SQL语句

18.在 Hibernate中,关于映射Oracle中的BLOB和CLOB类型的方法,说法正确的是( )。

A.CLOB类型只能映射为java.lang.String

B.BLOB类型可以映射为java.sql.Blob

C.BLOB类型可以映射为byte[]

D.CLOB类型可以映射为java.lang.String或java.sql.Clob

19.在Hibernate中,关于Criteria运算方法说法错误的是( )。

A.Restrictions.ge( )方法等同于HQL运算符 >=

B.Restrictions.like("empName","s",MatchMode.START)方法用于查找姓名以s开头的员工

C.Restrictions.disjunction( )方法用于指定多个逻辑与

D.Restrictions.in( )方法只能用于数组

20.在Hibernate中,关于注解说法正确的是( )。

A.@Id用于声明持久化类的唯一标识,对应于数据表中的主键

B.@Cloumn用于将属性映射到列

C.@Transient用于忽略该属性,需要持久化到数据库

D.@GeneratedValue用于定义主键值的生成策略

21.下列关于同义词的说法,选项正确的是( )。

A.只能为表创建同义词,不能为视图创建同义词

B.同义词只能用于引用其他用户创建的表

C.公有同义词和私有同义词对同一个表可以同名

D.使用Drop Synonym语句删除同义词的同时,同义词引用的表也无效

22.评估CREATE TABLE 语句:

CREATE TABLE products

(

product_id NUMBER(6) CONSTRAINT prod_id_pk PRIMARY KEY,

product_name VARCHAR2(15)

)

下列关于prod_id_pk选项正确的是( )。

A.可以被创建,但需要唯一索引用手工创建

B.可以被创建并且会自动创建唯一索引

C.可以被创建并且会自动创建非唯一索引

D.可以被创建但不可以使用,因为没有指定索引

23.下列创建序列的SQL语句:

CREATE SEQUENCE seq1

START WITH 100

INCREMENT BY 10

MINVALUE 1

MAXVALUE 200

CYCLE

NOCACHE;

序列seq1的生成的值已经到最大值200,再执行下列语句:

SELECT seq1.nextval FROM dual;

下列显式正确值的选项是( )。

A.1

B.10

C.100

D.报错

24.A_oe和A_hr是数据库中的2个用户,A_oe下有一个表Orders,执行下列语句如下:

CREATE ROLE r1;

GRNAT SELECT,INSERT ON A_oe.orders to r1;

GRANT r1 to A_hr;

GRANT SELECT ON A_oe.orders To A_hr;

REVOKE SELECT ON A_oe.orders FROM A_hr;

执行上面语句后结果正确的是( )。

A.A_hr能够查询A_oe.orders表

B.A_hr不能够查询A_oe.orders表

C.REVOKE语句将撤销A_hr的SELECT权限同时也从r1角色撤销SELECT权限

D.REVOKE语句将报错,因为SELECT权限已经被r1角色授予

25.对于视图,下列语句正确的是( )。

A.有列别名的视图不能被修改

B.一个复杂的视图定义中使用子查询不能包含聚合(分组)函数和连接

C.如果一个视图定义中包含DISTINCT关键字,则不能够通过视图进行删除

D.创建视图语法中OR REPLACE 选项被使用,目的是在没有删除视图的情况下修改已存

在的视图定义。

二、简答题(共5题,每题7.5分)

1.请简述Hibernate与jdbc的联系。

2.请简述MyBatis和Hibernate的区别。

3.请详细描述在Hibernate中Java对象的三种状态是如何转换的。

4.请简述Hibernate是如何实现分页的?如果不使用Hibernate提供的方法实现分页功能,则采用什么方式分页?

5.根据员工表编写规范的存储过程。完成以下任务:

1).给指定员工涨工资,其中员工编号和涨的工资金额由输入参数决定

2).涨工资后,显示所有员工薪水情况

3).在存储过程中考虑到以下异常:

A.指定的员工不存在的情况

B.涨的工资金额小于等于0的情况

4).编写调用程序,要求测试各种情况

一、选择题(共25题,每题2.5分,选择一项或多项,漏选错选不得分)

1

2

3

4

5

AC

AB

AD

AD

ABCD

6

7

8

9

10

D

ACD

BD

ABC

B

11

12

13

14

15

ABD

CD

D

CD

ABCD

16

17

18

19

20

C

ABC

BCD

CD

ABD

21

22

23

24

25

C

B

A

A

CD

二、简答题(共5题,每题7.5分)

1.

评分要点:

评分点

分数

Hibernate是jdbc的轻量级封装

4

HQL语句也是面向对象的

3.5

参考答案:

Hibernate是jdbc的轻量级封装,包括jdbc的与数据库的连接(用hibernate的配置文件实现,本质是封装了jdbc),和查询,删除等代码,都用面向对象的思想用代码联系起来,Hibernate通过hbm 配置文件(或注解)把持久化类的字段和数据库的字段关联起来比如数据库的id。

HQL语句也是面向对象的,它的查询语句不是查询数据库而是查询类的。

2.

评分要点:

评分点

分数

写出3条满分,少一条扣2分,直到扣完为止

7.5

参考答案:

调优方案:

Hibernate的调优方案:

  1. 制定合理的缓存策略;
  2. 尽量使用延迟加载特性;
  3. 采用合理的Session管理机制;
  4. 使用批量抓取,设定合理的批处理参数(batch_size);
  5. 进行合理的O/R映射设计

Mybatis调优方案:

MyBatis在Session方面和Hibernate的Session生命周期是一致的,同样需要合理的Session管理机制。MyBatis同样具有二级缓存机制。 MyBatis可以进行详细的SQL优化设计。

1> SQL优化方面

Hibernate的查询会将表中的所有字段查询出来,这一点会有性能消耗。Hibernate也可以自己写SQL来指定需要查询的字段,但这样就破坏了Hibernate开发的简洁性。而Mybatis的SQL是手动编写的,所以可以按需求指定查询的字段。Hibernate SQL语句的调优需要将SQL打印出来,而Hibernate的SQL被很多人嫌弃因为太丑了。MyBatis的SQL是自己手动写的所以调整方便。但Hibernate具有自己的日志统计。Mybatis本身不带日志统计,使用Log4j进行日志记录

2> 扩展性方面

Hibernate与具体数据库的关联只需在XML文件中配置即可,所有的SQL语句与具体使用的数据库无关,移植性很好。MyBatis项目中所有的SQL语句都是依赖所用的数据库的,所以不同数据库类型的支持不好。

3.

评分要点:

评分点

分数

写出5种转换得满分,少一种扣1分,直到扣完为止

4

写出导致转换的方法得满分,少一个扣1分,直到扣完为止。

3.5

参考答案:

瞬时状态转为持久状态

使用Session对象的save()或saveOrUpdate()方法保存对象后,该对象的状态由瞬时状态转换为持久状态。

使用Session对象的get()或load()方法获取对象,该对象的状态是持久状态。

持久状态转为瞬时状态

执行Session对象的delete()方法后,对象由原来的持久状态变为瞬时状态,因为此时该对象没有与任何的数据库数据关联。

持久状态转为游离状态

执行了Session对象的evict() 、clear()、close()方法,对象由原来的持久状态转为游离状态。

游离状态转为持久状态

重新获取Session对象,执行Session对象的update()或saveOrUpdate()方法,对象由游离状态转为持久状态,因为该对象再次与Session对象相关联。

游离状态转为瞬时状态

执行Session对象的delete()方法,对象由游离状态转为瞬时状态。

处于瞬时状态或游离状态的对象,会被Java虚拟机按照垃圾回收机制处理。

使用以下图形描述也可以

4.

评分要点:

评分点

分数

写出2条满分,少一条扣4分,直到扣完为止

7.5

参考答案:

1、Hibernate的分页机制:获得Session对象后,从Session中获得Query对象(或者Criteria对象)。接下来调用以下方法:

Query.setFirstResult( )(或者Criteria.setFirstResult( )):设置要显示的第一行数据,

Query.setMaxResults( )(或者Criteria.setMaxResults( )):设置最多要显示几行数据。

2、不使用Hibernate的分页机制,可采用SQL语句分页,以Oracle为例,

如:5:为每页显示的记录,2为当前页:

select b.* from

(select a.*,rownum rn from

( select * from dept order by deptno) a

) b

where b.rn> (2-1)*5 and b.rn<=2*5

5.

评分要点:

评分点

分数

正确书写存储过程参数

1

正确定义游标

1

正确处理薪水小于等于0异常

1

正确处理员工不存在异常

1

正确显式游标内容

1

正确调用存储过程-薪水异常

0.5

正确调用存储过程-员工编号异常

0.5

正确调用存储过程-成功

1

存储过程中含有规范中建议的2个返回参数

0.5

参考答案:

CREATE OR REPLACE PROCEDURE raise_salary
(eno NUMBER, --输入参数,雇员编号
salary NUMBER, --输入参数,雇员薪水
on_Flag OUT number, --执行状态
os_Msg OUT VARCHAR2 --提示信息
) IS
CURSOR emp_cur IS
SELECT ename,sal FROM employee;
v_emp emp_cur%ROWTYPE;
exp1 EXCEPTION;
exp2 EXCEPTION;
BEGIN
IF salary<=0 THEN
RAISE exp1;
END IF;
UPDATE EMPLOYEE
SET sal=sal+salary
WHERE empno=eno;
IF SQL%NOTFOUND THEN
RAISE exp2;
END IF;
on_Flag:=1;
os_Msg:='修改成功';
OPEN emp_cur;
LOOP
FETCH emp_cur INTO v_emp;
EXIT WHEN emp_cur%NOTFOUND;
dbms_output.put_line(v_emp.ename||v_emp.sal);
END LOOP;
CLOSE emp_cur;
EXCEPTION
WHEN exp1 THEN
on_Flag:=-1;
os_Msg:='涨的薪水不能小于等于0。';
WHEN exp2 THEN
on_Flag:=-2;
os_Msg:='不存在该员工。';
WHEN OTHERS THEN
on_Flag:=SQLcode;
os_Msg:=SQLERRM;
END; --调用1不存在该员工
DECLARE
v_empno employee.empno%TYPE:=1234;
v_sal employee.sal%TYPE:=50;
on_Flag number(1); --执行状态
os_Msg VARCHAR2(200); --提示信息
BEGIN
raise_salary(v_empno,v_sal,on_Flag,os_Msg);
IF on_flag=1 THEN
dbms_output.put_line(os_msg);
END IF;
IF on_flag=-1 THEN
dbms_output.put_line(os_msg);
END IF;
IF on_flag=-2 THEN
dbms_output.put_line(os_msg);
END IF;
END; --调用2涨的薪水不能小于等于0
DECLARE
v_empno employee.empno%TYPE:=7788;
v_sal employee.sal%TYPE:=0;
on_Flag number(1); --执行状态
os_Msg VARCHAR2(200); --提示信息
BEGIN
raise_salary(v_empno,v_sal,on_Flag,os_Msg);
IF on_flag=1 THEN
dbms_output.put_line(os_msg);
END IF;
IF on_flag=-1 THEN
dbms_output.put_line(os_msg);
END IF;
IF on_flag=-2 THEN
dbms_output.put_line(os_msg);
END IF;
END; --调用3修改成功
DECLARE
v_empno employee.empno%TYPE:=7788;
v_sal employee.sal%TYPE:=50;
on_Flag number(1); --执行状态
os_Msg VARCHAR2(200); --提示信息
BEGIN
raise_salary(v_empno,v_sal,on_Flag,os_Msg);
IF on_flag=1 THEN
dbms_output.put_line(os_msg);
END IF;
IF on_flag=-1 THEN
dbms_output.put_line(os_msg);
END IF;
IF on_flag=-2 THEN
dbms_output.put_line(os_msg);
END IF;
END;

hibernate内部测试题(附赠答案)的更多相关文章

  1. 《深入.NET平台和C#编程》内部测试题-笔试试卷答案

    1)      以下关于序列化和反序列化的描述错误的是( C). a)      序列化是将对象的状态存储到特定存储介质中的过程 b)      二进制格式化器的Serialize()和Deseria ...

  2. hibernate内部测试题总结

    在Hibernate中,关于脏检查和刷新缓存说法正确的是(ab ). A.当事务提交时,会发生脏检查 B.Session的flush( )方法是刷新缓存的方法 C.在执行Session的commit( ...

  3. JAVA语言基础内部测试题(50道选择题)

    JAVA语言基础内部测试题 选择题(针对以下题目,请选择最符合题目要求的答案,针对每一道题目,所有答案都选对,则该题得分,所选答案错误或不能选出所有答案,则该题不得分.)(每题2分) 没有注明选择几项 ...

  4. 【SQL】靠谱的TRIM函数,附赠过程一枚

    SQL中有LTRIM和RTRIM这两个函数分别用于去除字符串的首.尾空格,缺乏常见的能同时去除首尾的TRIM函数,另外,这俩函数都只对[空格]有效,所以如果首尾是制表符.换行符等等[空白],它们是不处 ...

  5. 【Python】把文件名命名成canlendar.py竟然导致无法使用canlendar模块 附赠2020年月历

    这个bug困扰了我一阵,直到在 http://www.codingke.com/question/15489 找到了解决问题的钥匙,真是没想到居然是这个原因导致的. 下面是出错信息,可以看到只要目录下 ...

  6. Oracle笔试题库 附参考答案

    1.  下列不属于ORACLE的逻辑结构的是(C) 区 段 数据文件 表空间 2. 下面哪个用户不是ORACLE缺省安装后就存在的用户(A) A . SYSDBA B. SYSTEM C. SCOTT ...

  7. 史上最全Java面试题整理(附参考答案)

    下列面试题都是在网上收集的,本人抱着学习的态度找了下参考答案,有不足的地方还请指正,更多精彩内容可以关注我的微信公众号:Java团长 1.面向对象的特征有哪些方面? 抽象:将同类对象的共同特征提取出来 ...

  8. 洛谷P3366【模板】最小生成树-克鲁斯卡尔Kruskal算法详解附赠习题

    链接 题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出orz 输入输出格式 输入格式: 第一行包含两个整数N.M,表示该图共有N个结点和M条无向边.(N<=5000,M&l ...

  9. 2018春招-今日头条笔试题5题(后附大佬答案-c++版)

    1题目描述 在n个元素的数组中,找到差值为k的除重后的数字对 输入描述 第一行:n和k,n表示数字的个数,k表示差值 第二行:n个整数 输入样例 输入: 5 2 1 5 3 4 2 输出: 3 说明: ...

随机推荐

  1. Auty自动化测试框架第七篇——添加动作库和常量文件库

    [本文出自天外归云的博客园] 添加动作库 因为有很多调用的action类如果一直保存在utils中会让utils库不可维护,所以规定utils库中只放和框架本身有关的工具类,和脚本内容相关的工具类都放 ...

  2. [问题2014A02] 复旦高等代数 I(14级)每周一题(第四教学周)

    [问题2014A02]  求下列 \(n\) 阶行列式的值, 其中 \(a_i\neq 0\,(i=1,2,\cdots,n)\): \[ |A|=\begin{vmatrix} 0 & a_ ...

  3. [问题2014S11] 复旦高等代数II(13级)每周一题(第十一教学周)

    [问题2014S11]  设 \(A,B\) 为 \(n\) 阶实对称阵, \(p(A),p(B),p(A+B)\) 分别为 \(A,B,A+B\) 的正惯性指数, 证明: \[p(A)+p(B)\g ...

  4. Exchange Server 2013就地存档

    9.1就地存档 就地存档有助于重新获得对组织邮件数据的控制,而无需个人存储 (.pst) 文件,并且允许用户在可通过 Microsoft Outlook 2010及更高版本和 Microsoft Of ...

  5. Writing Text Files On The Client in Oracle Forms 10g

    Below is the example to write file on client in Oracle Forms 10g with webutil library package.Note:  ...

  6. c语言期末复习题

    代码参考:<K&R> 1.单词计数 #include<stdio.h> #define IN 1 #define OUT 0 main() { int c, state ...

  7. 启动tomcat后struts框架报异常严重: Exception starting filter struts2 Unable to load configuration.

    启动tomcat后struts框架报异常严重: Exception starting filter struts2 Unable to load configuration. 出现此异常是因为,str ...

  8. Oracle 优化 - CPU 问题

    作为 OLTP 应用,一般不太有 CPU 问题,比较少 - 毕竟大多数问题都是 IO 引起:但是偶尔也会有. 问题判断 很简单 - OS 出现 CPU 很高的问题,持续高于 90% 应用可能会表现慢 ...

  9. Android Studio UML 插件 PlantUML 使用语法

    活动标签(activity label)以冒号开始,以分号结束. 文本格式支持creole wiki语法. 活动默认安装它们定义的顺序就行连接. @startuml :Hello world; :Th ...

  10. 转帖-[教程] Win7精简教程(简易中度)2016年8月-0day

    [教程] Win7精简教程(简易中度)2016年8月 0day 发表于 2016-8-19 16:08:41  https://www.itsk.com/thread-370260-1-1.html ...