hibernate内部测试题总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
hibernate内部测试题总结在Hibernate中,关于脏检查和刷新缓存说法正确的是(ab )。
A.当事务提交时,会发⽣脏检查
B.Session的flush( )⽅法是刷新缓存的⽅法
C.在执⾏Session的commit( )⽅法之前不会调⽤Session的flush( )⽅法
D.编写代码时,调⽤commit( )⽅法之前要调⽤flush( )⽅法
解析:在执⾏Session的commit()⽅法之前会调⽤Session的flush()⽅法 C错误
调⽤commit()⽅法都不是⼿动调⽤flush()⽅法
使⽤HQL查询所有部门信息,以下正确的是( b)。
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
解析: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="ng.Integer">
<generator class="assigned"/>
</id>
<property name="salary" type="ng.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类型只能映射为ng.String
B.BLOB类型可以映射为java.sql.Blob
C.BLOB类型可以映射为byte[]
D.CLOB类型可以映射为ng.String或java.sql.Clob
解析:BLOB数据类型:byte[] java.sql.Blob
CLOB数据类型:ng.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 选项被使⽤,⽬的是在没有删除视图的情况下修改已存在的视图定义。