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

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

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

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

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

选项C中 SQL Server不支持序列

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

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

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

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

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

脏检查以及刷新缓存
1.脏检查是事务提交的时候进行的

2.刷新缓存:刷新缓存的事情就是脏检查
两种方式:
方式一:事务提交
方式二:session.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

关于HQL
from Dept 检索所有部门的信息
select d from cn.happy.entity.Student d 检索所有部门的信息 很2的写法
select d from Dept d

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

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

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

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

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

iterate()返回的是主键值 而不是返回所有记录

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

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

B.setParameter( )有重载的方法

C.setProperties( )有重载的方法

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

ABCD

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属性用于指定维护关联关系的那一方

7.inverse
解析:维护关联关系
true: 自己不维护关联关系,对方维护
false:自己维护关联关系

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

8.延迟加载 lazy
分类
类级别 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>标签有id、name、class属性

9.component组件映射
<hibernate-mapping package="cn.happy.component">
<class name="EmpInfo" table="EMPINFO">
<id name="eid" column="EID">
<generator class="native"></generator>
</id>
<property name="ename" column="ENAME" type="string"></property>
<component name="ehome" class="EmpHomeAddress">
<parent name="empinfo"/>
<property name="ehomestreet" column="EHOMESTREET" type="string"></property>
<property name="ehomecity" column="EHOMECITY" type="string"></property>
<property name="ehomeprovince" column="EHOMEPROVINCE" type="string"></property>
<property name="ehomezipcode" column="EHOMEZIPCODE" type="string"></property>
</component>
</class>
</hibernate-mapping>

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

A.<sqlMapConfig>

B.<configuration>

C.<setting>

D.<environments>

MyBatis根元素使用的是<configuration>

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

A.ExecutorType.SIMPLE

B.ExecutorType.BATCH

C.ExecutorType.EXECUTE

D.ExecutorType.REUSE

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

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

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

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

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

clear()是清空缓存,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用于迫切右外连接

inner join 或 join用于内连接
inner join fetch或 join fetch用于迫切内连接
left outer join fetch 或 left join fetch用于迫切左外连接

没有迫切右外连接

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

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

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

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

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

12.批量处理数据

方式一:
使用HQL语句
原理: executeUpdate
01.批量插入数据
@Test
public void testInsert(){
Session session = HibernateUtil.getSession();
Transaction tx=session.beginTransaction();
String hql="insert into Dept(deptName) select d.deptName||d.deptNo from Dept d where d.deptNo>0";
session.createQuery(hql).executeUpdate();
tx.commit();
}

方式二:JDBCAPI
//使用JDBC API进行批量修改
public void testUpdateUseJDBC(){
Session session = HibernateUtil.getSession();
Transaction tx=session.beginTransaction();
Work work=new Work() {
@Override
public void execute(Connection connection) throws SQLException {
String sql="update DEPTY2160New set deptName=? where deptNo>?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, "财务部2");
ps.setInt(2, 1);
ps.executeUpdate();
}
};
session.doWork(work);
tx.commit();
}

方式三: 使用Session进行批量操作

public void testAdd(){
Session session = HibernateUtil.getSession();
Transaction tx=session.beginTransaction();
Emp emp=null;
for (int i = 0; i < 10000; i++) {
emp=new Emp(i, "emp"+i);
session.save(emp);
if (i%30==0) {
session.flush();
session.clear();
}
}
tx.commit();
}

little tip:
(1)使用HQL进行批量操作 数据库层面 executeUpdate()
(2)使用JDBC API进行批量操作 数据库层面
(3)使用Session进行批量操作 会进缓存

little tip2:
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”意思相同

C选项中返回的是任意一条记录

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

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

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

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

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

1.原生SQL查询
@Test
//原生SQL执行
public void testClassicSQL(){
SQLQuery query = session.createSQLQuery("select * from deptY2160new").addEntity(Dept.class);
List<Dept> list = query.list();
for (Dept dept : list) {
System.out.println(dept.getDeptName());
}
tx.commit();
}

2.命名查询
<!-- -原生SQL NullPointException -->
<sql-query name="selectEmpByDetpNoClassicSQL">
<return alias="e" class="Emp" ></return>
select {e.*} from EmpY2160new e where deptNo=:deptNo
</sql-query>

测试类
public void testNamedClassicSQL(){
Query query = session.getNamedQuery("selectEmpByDetpNoClassicSQL");
List<Emp> list = query.setParameter("deptNo", 1).list();
/* for (Emp emp : list) {
System.out.println(emp.getEmpName());
}*/
tx.commit();
}

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用于定义主键值的生成策略

Hibernate常见注解
@Id
@Column
@Table
@Entity
@GeneratedValue
@ManyToOne
@JoinColumn

Hibernate内测总结的更多相关文章

  1. hibernate多对多关联映射

    关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...

  2. 解决 Springboot Unable to build Hibernate SessionFactory @Column命名不起作用

    问题: Springboot启动报错: Caused by: org.springframework.beans.factory.BeanCreationException: Error creati ...

  3. hibernate多对一双向关联

    关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...

  4. Hibernate中事务的隔离级别设置

    Hibernate中事务的隔离级别,如下方法分别为1/2/4/8. 在Hibernate配置文件中设置,设置代码如下

  5. Hibernate中事务声明

    Hibernate中JDBC事务声明,在Hibernate配置文件中加入如下代码,不做声明Hibernate默认就是JDBC事务. 一个JDBC 不能跨越多个数据库. Hibernate中JTA事务声 ...

  6. spring applicationContext.xml和hibernate.cfg.xml设置

    applicationContext.xml配置 <?xml version="1.0" encoding="UTF-8"?> <beans ...

  7. [原创]关于Hibernate中的级联操作以及懒加载

    Hibernate: 级联操作 一.简单的介绍 cascade和inverse (Employee – Department) Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似 ...

  8. hibernate的基本xml文件配置

    需要导入基本的包hibernate下的bin下的required和同bin下optional里的c3p0包下的所有jar文件,当然要导入mysql的驱动包了.下面需要注意的是hibernate的版本就 ...

  9. Maven搭建SpringMVC+Hibernate项目详解 【转】

    前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这 ...

随机推荐

  1. 简谈asp.net下的异步加载

    具体我本身大概用的就有两种,需配合JQ. 第一种,直接通过AJAX去请求页面:例如, 1:dataType必须是html或者Text格式, 2:Type:必须是'Post'请求 3:后台Load事件必 ...

  2. PHP资源网站收藏

    PHP之道 http://laravel-china.github.io/php-the-right-way/#use_the_current_stable_version http://www.ph ...

  3. 企业商务差旅信息化管理与移动App

    背景       某航空公司需要到北京某服务提供商公司学习交流,为了节省出行成本让出差员工乘坐公司运营航线,去程路途较远.需要在先乘飞机到天津机场,转地铁后,再乘动车到北京.回程时发生 后补机票失败, ...

  4. SOA实践之基于服务总线的设计

    在上文中,主要介绍了SOA的概念,什么叫做“服务”,“服务”应该具备哪些特性.本篇中,我将介绍SOA的一种很常见的设计实践--基于服务总线的设计. 基于服务总线的设计 基于总线的设计,借鉴了计算机内部 ...

  5. C#浅析单例模式

    第一次写博客,写的不好休怪哈. 版本1:最简单的单例模式 方法一: public class MySingleton { private MySingleton() //构造函数,注意private ...

  6. svg.js教程及使用手册详解(二)

    上篇简要介绍了svg.js的基本信息和基本用法,这篇开始详细讲解svg.js的用法. SVG元素 SVG元素主要包括各种形状.线条.文本.路径. 矩形——Rect Rects有两个参数,即矩形的宽度和 ...

  7. Netty(二)入门

    在上篇<Netty(一)引题>中,分别对AIO,BIO,PIO,NIO进行了简单的阐述,并写了简单的demo.但是这里说的简单,我也只能呵呵了,特别是NIO.AIO(我全手打的,好麻烦). ...

  8. OData V4 系列 .net应用

    OData 学习目录 添加 OData Client Code Generator 扩展 添加OData T4生成工具 修改 T4 模板的 MetadataDocumentUri 运行Web项目,之后 ...

  9. 前端弹出对话框 js实现 ajax交互

    原本计划实现这样一个需求: 前台点击触发某业务动作,需要用户补充信息,不做跳转页面,弹窗的形式进行补充信息. 折腾出来了,但是最终没有用到. 代码还有些毛躁,提供大概实现逻辑. 实现思路: 在窗口铺上 ...

  10. Java学习心得之 HttpClient的GET和POST请求

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Java学习心得之 HttpClient的GET和POST请求 1. 前言2. GET请求3 ...