hibernate内部测试题总结

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

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

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

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

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

解析:在执行Session的commit()方法之前会调用Session的flush()方法 C错误

    调用commit()方法都不是手动调用flush()方法

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

Afrom Dept

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

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

Dselect d from Dept d

解析:HQL查询信息没有 *  

  

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

 

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

 

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

 

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

 

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

解析:list()是查询手游符合条件的记录

   iterate()是查询出所有符合条件的

 

 

 

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

 

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

 

B.setParameter( )有重载的方法

 

C.setProperties( )有重载的方法

 

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

 

 

 

 

 

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

 

<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表的主键名

 

解析:D选项中column属性值deptNo是emp表中的外键列

 

 

 

 

 

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

 

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

 

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

 

C.<set>标签有inverse属性

 

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

 

解析:多对一中没有inverse属性

 

 

 

 

 

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

 

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

 

解析:类级别取值:true,false

 

        一对多或多对多级别取值:true,false,extra

 

        多对一级别取值:proxy,no-proxy,false

 

 

 

 

 

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

 

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

 

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

 

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

 

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

 

解析:<component>标签中没有id属性

 

 

 

 

 

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

 

A.<sqlMapConfig>

 

B.<configuration>

 

C.<setting>

 

D.<environments>

 

 

 

 

 

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

 

A.ExecutorType.SIMPLE

 

B.ExecutorType.BATCH

 

C.ExecutorType.EXECUTE

 

D.ExecutorType.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缓存说法错误的是( CD)。

 

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

 

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

 

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

 

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

 

解析:Session的clear( )方法用于从缓存中清除所有持久化对象

 

        Session的flush( )方法用于刷新缓存

 

 

 

 

 

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

 

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用于迫切右外连接

 

解析:hql语句中没有迫切右外连接

 

 

 

 

 

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

 

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

 

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

 

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

 

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

 

 

 

 

 

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

 

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子查询中,说法错误的是(C)。

 

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

 

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

 

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

 

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

 

解析:any关键字用于子查询语句返回任意一条记录

 

 

 

 

 

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

 

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

 

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

 

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

 

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

 

解析:命名查询是原生SQL

 

 

 

 

 

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

 

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

 

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

 

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

 

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

 

解析:BLOB数据类型:byte[]   java.sql.Blob

 

        CLOB数据类型:java.lang.String  java.sql.Clob

 

 

 

 

 

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

 

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

 

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

 

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

 

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

 

解析:C:逻辑或

 

         D:还能用于collection

 

 

 

 

 

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

 

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

 

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

 

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

 

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

 

解析:@Transient用于忽略该属性,但不需要持久化到数据库

 

 

 

 

 

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

 

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选项正确的是(B )。

 

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;

 

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

 

A.1

 

B.10

 

C.100

 

D.报错

 

 

 

 

 

24.A_oe和A_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;

 

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

 

A.A_hr能够查询A_oe.orders表

 

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

 

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

 

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

 

 

 

 

 

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

 

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

 

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

 

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

 

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

 

posted @ 2016-09-23 17:13  许良  阅读(518)  评论(0编辑  收藏  举报