《使用Hibernate开发租房系统》内部测试笔试题

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

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

Aincrement可以用于类型为longshortbyte的主键

Bidentity用于如SQL ServerDB2MySQL等支持标识列的数据库

Csequence用于如OracleSQL Server等支持序列的数据库

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

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

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

BSessionflush( )方法是刷新缓存的方法

C.在执行Sessioncommit( )方法之前不会调用Sessionflush( )方法

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

脏检查是事务提交的时候进行的

刷新缓存的事情就是脏检查

两种方式:事务提交、Session.flush();

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

Afrom Dept

Bselect * from cn.jbit.demo.entity.Dept

Cselect Dept from cn.jbit.demo.entity.Dept d

Dselect d from Dept d

from Dept 检索所有部门的信息

select d from cn.happy.entity.Student d 检索所有部门的信息 (很2的写法)

select d from Dept d 检索所有部门的信息 (很2的写法)

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

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

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

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

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

讲过不解释。

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

AsetParameter( )方法用于绑定任意类型的参数

BsetParameter( )有重载的方法

CsetProperties( )有重载的方法

DsetProperties( )方法用于绑定命名参数

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属性值deptcn.jbit.hibernatedemo.entity.Emp类的属性名

D<many-to-one>标签中的column属性值DEPTNOdept表的主键名

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

Ainverse属性有两个值:truefalse

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

C<set>标签有inverse属性

Dinverse属性用于指定维护关联关系的那一方

维护关联关系

true:自己不维护关联关系,对方维护

false:自己维护关机联系

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

A<class>标签中lazy属性可选值:truefalse

B<set>标签中lazy属性可选值:trueproxyno-proxy

C< set>标签中lazy属性可选值:trueextrafalse

D<many-to-one>标签中lazy属性可选值:proxytruefalse 

分类:

类级别 true(默认) false

一对多和多对多 true(default) false,extra(加强延迟加载)

多对一(没有set) proxy(default) ,no-proxy,false

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

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

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

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

D<component>标签有idnameclass属性

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

A<sqlMapConfig>

B<configuration>

C<setting>

D<environments>

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

AExecutorType.SIMPLE

BExecutorType.BATCH

CExecutorType.EXECUTE

DExecutorType.REUSE

public final enum org.apache.ibatis.session.ExecutorType {

// Field descriptor #8 Lorg/apache/ibatis/session/ExecutorType;
public static final enum org.apache.ibatis.session.ExecutorType SIMPLE;

// Field descriptor #8 Lorg/apache/ibatis/session/ExecutorType;
public static final enum org.apache.ibatis.session.ExecutorType REUSE;

// Field descriptor #8 Lorg/apache/ibatis/session/ExecutorType;
public static final enum org.apache.ibatis.session.ExecutorType BATCH;

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

AHibernate缓存一般分为三类:一级缓存、二级缓存和查询缓存

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

CSessionclear( )方法用于刷新缓存

DSessionflush( )方法用于从缓存中清除所有持久化对象

 C和D反了。

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

Ainner join join用于内连接

Binner join fetchjoin fetch用于迫切内连接

Cleft outer join fetch left join fetch用于迫切左外连接

Dright outer join fetch right join fetch用于迫切右外连接

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

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

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

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

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

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

Aselect count(*) from Dept d用于统计部门个数

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

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

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

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

Asize( )size用于获取集合中元素的数目

Belements( )获取集合中的所有元用于素

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

Din关键字与“=any”意思相同

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

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

BSQLQuery是一个接口,继承了Query接口

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

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

18 Hibernate中,关于映射Oracle中的BLOBCLOB类型的方法,说法正确的是( )。

ACLOB类型只能映射为java.lang.String

BBLOB类型可以映射为java.sql.Blob

CBLOB类型可以映射为byte[]

DCLOB类型可以映射为java.lang.Stringjava.sql.Clob

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

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

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

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

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

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

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;

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

A1

B10

C100

D.报错

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

CREATE ROLE r1;  --System

GRNAT SELECT,INSERT ON A_oe.orders to r1;   --A_oe模式下

GRANT r1 to A_hr;   --System模式下

GRANT SELECT ON A_oe.orders To A_hr;  --A_oe模式下

REVOKE SELECT ON A_oe.orders FROM A_hr;

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

AA_hr能够查询A_oe.orders

BA_hr不能够查询A_oe.orders

CREVOKE语句将撤销A_hrSELECT权限同时也从r1角色撤销SELECT权限

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

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

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

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

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

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

原文地址:https://www.cnblogs.com/lizeyang/p/5900723.html