7 以下关于 SessionFactory 的说法正确的是 ( ) A 对于每个数据库事务, 应该创建一个 SessionFactory 对象 B 一个 SessionFactory 对象对应多个数据库存储源 C SessionFactory 是重量级的对象, 不应该随意创建 如果系统中只有一个数据

Similar documents
输入 project name 选择完成

空白处应该填写的内容为 ( ) A Integer B Long C Float D Double 9 以下关于 Query 对象获取查询结果的说法, 不正确的是 ( ) A list() 方法返回的结果为 List 集合 B list() 方法返回结果数据总量为 1 到多条数据 C uniquer

金融信息系统数据库访问实验指导书.doc

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc

Microsoft Word - JkfZw3

untitled

设计模式 Design Patterns

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

基于ECO的UML模型驱动的数据库应用开发1.doc

untitled

无类继承.key

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

EJB-Programming-4-cn.doc

EJB-Programming-3.PDF

1-1 database columnrow record field 不 DBMS Access Paradox SQL Server Linux MySQL Oracle IBM Informix IBM DB2 Sybase 1-2

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

個 人 的 手, 拉 著 瞎 子 的 手 把 他 帶 往 村 外 的 時 候, 對 於 瞎 子 來 講, 那 個 人 的 手 和 耶 穌 的 手 有 沒 有 區 別? 沒 有! 為 什 麼 沒 有 區 別? 因 為 對 於 一 個 瞎 子 來 說, 手 和 耳 朵 就 是 他 接 觸 世 界, 瞭

没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型

untitled

计算机软件技术专业教学计划

"+handlermethod.getbean().getclass().getname()); public void aftercompletion(httpservletrequest req, HttpServletResponse resp, Object handler, Excepti

软件工程文档编制

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

IoC容器和Dependency Injection模式.doc

Microsoft Word - 第7章 初识Hibernate—教学大纲.doc

Microsoft Word - ShkZw5.doc

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

将 MD5 的工具类拷贝到项目中 二 微服务模块的搭建 我们将权限的查询放到一个单独的模块中, 这个模块提供接口供给消费者远程调用 (RPC), 这次范例是微服开发的雏形, 在以后你使用 springcloud 的时候会使用到今天的概念 1 使用 maven 创建新的模块 (microboot-sh

北 风 网 讲 师 原 创 作 品 ---- 仅 供 学 员 内 部 交 流 使 用 前 言 吾 尝 终 日 而 思 矣, 不 如 须 臾 之 所 学 也 ; 吾 尝 跂 而 望 矣, 不 如 登 高 之 博 见 也 登 高 而 招, 臂 非 加 长 也, 而 见

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

RunPC2_.doc

<4D F736F F F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

4.1 AMI MQSeries API AMI MQI AMI / / AMI JavaC C++ AMI / AMI AMI - / /

FileMaker 15 ODBC 和 JDBC 指南

Microsoft Word - Learn Objective-C.doc

Chapter 9: Objects and Classes

untitled

使用Cassandra和Spark 2.0实现Rest API服务

Microsoft Word - ch04三校.doc

untitled

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

在Spring中使用Kafka:Producer篇

Flume-ng与Mysql整合开发

在所有的项目开发中, 一定是多人协作的团队开发, 但是使用框架就会出现一个问题, 我们所 有的 Action 以及相关的路径都要求在我们的 struts.xml 文件中配置, 如果所有的人去修改一个 文件, 那么就会变得混乱, 而且有可能出现冲突, 那么在 struts.xml 文件中为了解决这个问

untitled

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

Guava学习之Resources

Microsoft Word - 新1-12.doc

FileMaker 16 ODBC 和 JDBC 指南

提问袁小兵:

优迈科技教学大纲2009版本

RxJava

使用MapReduce读取XML文件

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票

untitled

设计模式 Design Patterns

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 號 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

通过Hive将数据写入到ElasticSearch

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

Microsoft Word - 01.DOC

Java

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

untitled

untitled

Microsoft Word 電腦軟體設計.doc

學 科 100% ( 為 單 複 選 題, 每 題 2.5 分, 共 100 分 ) 1. 請 參 閱 附 圖 作 答 : (A) 選 項 A (B) 選 項 B (C) 選 項 C (D) 選 項 D Ans:D 2. 下 列 對 於 資 料 庫 正 規 化 (Normalization) 的 敘

Hive:用Java代码通过JDBC连接Hiveserver

回滚段探究

Microsoft Word - MIS.doc

ebook 96-16

(2) 标 识 构 件 活 动 首 先 需 要 获 得 系 统 的 基 本 结 构, 然 后 对 基 本 结 构 进 行 分 组, 最 后 将 基 本 结 构 进 行 打 包 成 构 件 (3) 架 构 需 求 评 审 活 动 组 织 一 个 由 系 统 涉 众 ( 用 户 系 统 分 析 师 架

電機工程系認可證照清單 /7/1

「西醫基層總額支付委員會《第28次委員會議紀錄

ebook4-14

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

untitled

untitled

自动化接口

设计模式 Design Patterns

在 ongodb 中实现强事务

Nhibernate入门

<4D F736F F D20BBF9D3DA416E64726F6964C6BDCCA8B5C4B5E7D7D3C5C4C2F4CFB5CDB32E646F63>

团 学 要 闻 我 校 召 开 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 3 月 17 日, 我 校 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 在 行 政 办 公 楼 五 楼 会 议 室 举 行, 校 团 委 委 员 各 院 ( 系 ) 团 委 书 记 校 学 生

Chapter 9: Objects and Classes

基于UML建模的管理管理信息系统项目案例导航——VB篇

概述

epub83-1

Android Android Android SDK iv

untitled

1.5招募说明书(草案)

基于CDIO一体化理念的课程教学大纲设计

Transcription:

第七章初识 Hibernate 样题 B 卷 一 填空题 ( 每小题 2 分, 共 20 分 ) 1 Hibernate 是一个开放源代码的 框架 2 Hibernate 是用 的编程思想来操作数据库的 3 ORM 就是利用描述 之间映射的元数据, 自动把 Java 应用程序中的对象, 持久化到关系型数据库的表中 4 目前企业主流使用的 Hibernate 版本是 5 Configuration 实例主要用于启动 加载 管理 Hibernate 的 信息 6 Session 是应用程序与数据库之间交互操作的一个 对象 7 SessionFactory 接口负责 Hibernate 的初始化和建立 8 Transaction 接口主要用于, 它是 Hibernate 的数据库事务接口 9 session.createquery() 方法接收的参数是 语句 10 Criteria 是一个完全面向对象, 又被称为 查询, 是 Hibernate 的另一种对象检 索方式 二 选择题 ( 每小题 2 分, 共 20 分 ) 1 以下选项中不属于 Session 的方法是 ( ) A get() B save() C commit() D createcriteria() 2 下面选项中, 说法正确的是 ( ) A Hibernate 是面向对象的编程思想来操作数据库 B Hibernate 是面向表的编程思想来操作数据库 C Hibernate 是面向过程的编程思想来操作数据库 D Hibernate 是面向字段的编程思想来操作数据库 3 下列选项中, 关于 Hibernate 优势的描述, 错误的是 ( ) A Hibernate 对 JDBC 访问数据库的代码做了重量级封装 B Hibernate 应用了 Java 的反射机制 C 使用者可以对 Hibernate 的功能进行扩展 D Hibernate 支持很多的关系型数据库 4 下列选项中, 不属于 Hibernate 目录结构下的是 ( ) A documentation B src C lib D project 5 下面选项中, 不属于 Hibernate 核心接口的是 ( ) A Transaction B Query C Configuration D Servlet 6 下面选项中, 能够正确获取 Session 对象的方式是 ( ) A sessionfactory.opensession() B sessionfactory.createsession() C sessionfactory.getsession() D sessionfactory.session()

7 以下关于 SessionFactory 的说法正确的是 ( ) A 对于每个数据库事务, 应该创建一个 SessionFactory 对象 B 一个 SessionFactory 对象对应多个数据库存储源 C SessionFactory 是重量级的对象, 不应该随意创建 如果系统中只有一个数据库存 储源, 只需要创建一个 D SessionFactory 的 load() 方法用于加载持久化对象 8 以下程序的打印结果是什么?( ) session = sessionfactory.opensession(); Employee c1=(employee)session.load(employee.class,1); Employee c2=(employee)session.load(employee.class,1); System.out.println(c1==c2); A 运行出错, 抛出异常 B 打印 false C 打印 true D 运行通过, 但什么都不显示 9 以下哪个选项不是关系数据模型与对象模型之间的匹配关系 :( ) A 表对应类 B 记录对应对象 C 表的字段对应类的属性 D 表之间的参考关系对应类之间的依赖关系 10 下面关于 hibernate 核心接口的描述, 错误的是 ( ) A Configuration 接口 : 配置 Hibernate, 根据其启动 hibernate, 创建 SessionFactory 对象 B SessionFactory 接口 : 负责保存 更新 删除 加载和查询对象, 是线程不安全 的, 避免多个线程共享同一个 session, 是轻量级 一级缓存 C Query 和 Criteria 接口 : 执行数据库的查询 D Transaction 接口 : 管理事务 三 判断题 ( 每题 2 分, 共 10 分 ) 1 使用 Hibernate 框架对数据库的所有操作都必须手动开启事务 () 2 Hibernate 框架只能用于 JavaWeb 的项目开发 () 3 ORM 就是利用描述对象和数据库表之间映射的元数据, 手动把 Java 应用程序中的对象, 持久化到关系型数据库的表中 () 4 Hibernate 对 JDBC 访问数据库的代码做了重量级封装 () 5 SessionFactory 是线程安全的, 它的同一个实例能够供多个线程共享 () 四 简答题 ( 每题 5 分, 共 20 分 ) 1 Hibernate 框架的概述 2 简述 Hibernate 框架的优势 3 简述 Hibernate 持久化操作的主要步骤 4 Session 对象的 get() 和 load() 方法的区别 五 操作题 ( 每题 10 分, 共 30 分 )

hibernate 数据库中已创建 employee 表 : CREATE TABLE employee ( id INT(11) NOT NULL AUTO_INCREMENT COMMENT ' 主键 id', name VARCHAR(20) DEFAULT NULL COMMENT ' 姓名 ', age INT(11) DEFAULT NULL COMMENT ' 年龄 ', sex VARCHAR(2) DEFAULT NULL COMMENT ' 性别 ', city VARCHAR(20) DEFAULT NULL COMMENT ' 城市 ', PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8; 1 使用 Hibernate 加载指定配置文件 (hibernate.cfg.xml), 读取数据库表 employee 中的数据, 并遍历打印 2 使用 Hibernate 对 employee 表进行增删改操作 要求如下 : 1) 添加一条 name= tom,age=26,city= 北京 的员工数据 2) 修改 id 为 1 的员工,name= joe,sex= 男 3) 删除 id=1 的员工 3 使用 Criteria 对象, 查询 employee 表 要求如下 : 1) 通过 sql 语句直接插入 2 条员工数据 (name= tom,age=34 和 name= joe,city= 西安 ) 2) 使用 uniqueresult() 方法查询 id=2 的员工数据 3) 使用 Restrictions.eq() 方法获取 name= tom 的员工数据

答案 一 填空题 1 ORM 或对象关系映射 2 面向对象 3 对象和数据库表 4 Hibernate3.x 5 配置文件 6 单线程 7 Session 对象 8 管理事务 9 HQL 10 QBC 二 选择题 1.C 2.A 3.A 4.B 5.D 6.A 7.C 8.C 9.D 10.B 三 判断题 1.N 2.N 3.N 4.N 5.Y 四 简答题 ------------------- 第 1 题 ------------------- 1.Hibernate 框架的概述 Hibernate 是一个开放源代码的 ORM(Object Relational Mapping, 对象关系映射 ) 框架, 它对 JDBC 进行了轻量级的对象封装, 使得 Java 开发人员可以使用面向对象的编程思想来操作数据库 ------------------- 第 2 题 ------------------- 2. 简述 Hibernate 框架的优势 与其它操作数据库的技术相比,Hibernate 具有以下几点优势 : Hibernate 对 JDBC 访问数据库的代码做了轻量级封装, 大大简化了数据访问层繁琐的重复性代码, 并且减少了内存消耗, 加快了运行效率 Hibernate 是一个基于 JDBC 的主流持久化框架, 是一个优秀的 ORM 实现, 它很大程度的简化了 DAO(Data Access Object, 数据访问对象 ) 层编码工作 Hibernate 使用 Java 的反射机制, 而不是使用字节码增强程序类并实现透明性 Hibernate 的性能非常好, 映射的灵活性很出色 它支持很多关系型数据库, 从一对一到多对多的各种复杂关系 可扩展性强, 由于源代码的开源以及 API 的开放, 当本身功能不够用时, 可以自行编码进行扩展 ------------------- 第 3 题 ------------------- 3. 简述 Hibernate 持久化操作的主要步骤 (1) 初始化 Hibernate, 构建 Configuration 实例 这一步用来读取 Hibernate 核心配置文件和映射文件信息到 Configuration 对象中

(2) 创建 SessionFactory 实例 通过 Configuration 对象读取到的配置文件信息并创建 SessionFactory, 并将 Configuration 对象中的所有配置文件信息存入 SessionFactory 内存中 (3) 创建 Session 实例, 建立数据库连接 Session 是通过 SessionFactory 打开, 创建一个 Session 对象就相当于建立一个新的数据库连接 (4) 创建 Transaction 实例, 开启一个事务 Transaction 用于事务管理, 一个 Transaction 对象对应的事务可以包含多个操作 在使用 Hibernate 进行增 删 改操作的时候, 必须先创建 Transaction 对象 (5) 利用 Session 接口通过的各种方法进行持久化操作 (6) 提交事务 对实体对象持久化操作后, 必须提交事务 (7) 关闭 Session, 断开与数据库连接 ------------------- 第 4 题 ------------------- 4. Session 对象 get() 和 load() 方法的区别 两者的区别是使用 get() 方法加载数据时, 如果指定的记录不存在, 则返回 null, 而使用 load() 方法加载数据时, 如果指定记录不存在, 则会报出 ObjectNotfountException 异常, 这一异常说明使用 load() 方法加载数据时, 要求记录必须存在 五 操作题 ------------------- 第 1 题 ------------------- 1 使用 Hibernate 加载制定配置文件 (hibernate.cfg.xml), 读取数据库表 employee, 并遍历打印 (1) 创建一个 java 项目 (2) 在 src 目录下创建 hibernate.cfg.xml 文件, 代码如下 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <!-- JDBC 基本连接参数 --> <session-factory> <!-- 理解为连接池 --> name="hibernate.connection.driver_class">com.mysql.jdbc.driver</property> name="hibernate.connection.url">jdbc:mysql:///hibernate</property> name="hibernate.connection.username">root</property> name="hibernate.connection.password">root</property> <!-- 配置方言 --> name="hibernate.dialect">org.hibernate.dialect.mysqldialect</property> <!-- 常见其它配置 --> name="hibernate.show_sql">true</property> <!-- 控制台上打印 SQL --> name="hibernate.format_sql">true</property> <!-- 控制台输出时, 对 SQL 语句格式化 -->

<!-- 加载映射文件 --> <mapping resource="cn/itcast/domain/employee.hbm.xml"/> </session-factory> </hibernate-configuration> (3) 在 cn.itcast.domain 包下创建 Employee 实体类, 代码如下 package cn.itcast.domain; public class Employee { private Integer id; private String name; private Integer age; private String sex; private String city; public Integer getid() { return id; public void setid(integer id) { this.id = id; public String getname() { return name; public void setname(string name) { this.name = name; //... 由于篇幅问题, 省略部分的 getter 和 setter 方法 @Override public String tostring() { return "Employee [id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + ", city=" + city + "]"; (4) 在 cn.itcast.domain 包下创建映射文件 Employee.hbm.xml, 代码如下 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="cn.itcast.domain.employee" table="employee" catalog="hibernate"> <id name="id"> <generator class="native"></generator> </id> <!-- 其它属性使用 property 标签来映射 --> name="name" column="name" type="string" /> name="age" column="age" type="integer" />

name="sex" column="sex" type="string"/> name="city" column="city" type="string"/> </class> </hibernate-mapping> (5) 在 src 目录下创建包名为 cn..itcast.test, 并在该包下编写 java 程序查询数据表 employee, 并遍历输出, 代码如下 package cn.itcast.test; import java.util.list; import org.hibernate.query; import org.hibernate.session; import org.hibernate.sessionfactory; import org.hibernate.cfg.configuration; import org.junit.test; import cn.itcast.domain.employee; public class Test1 { public void test1(){ Configuration cfgt = new Configuration(); Configuration cfg = cfgt.configure(); //query 对象 HQL 方式查询 Query query = session.createquery("from Employee"); List<Employee> list = query.list(); // 遍历输出 for(employee e:list){ System.out.println(e); ------------------- 第 2 题 ------------------- 2 使用 Hibernate 对 employee 表进行增删改查 (1) 在 src 目录下编写 hibernate.cfg.xml 配置文件, 代码如下 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <!-- JDBC 基本连接参数 --> <session-factory> <!-- 理解为连接池 -->

name="hibernate.connection.driver_class">com.mysql.jdbc.driver</property> <! 设置链接数据库编码为 utf8 --> name="hibernate.connection.url">jdbc:mysql:///hibernate?characterencoding=utf8 </property> name="hibernate.connection.username">root</property> name="hibernate.connection.password">root</property> <!-- 配置方言 --> name="hibernate.dialect">org.hibernate.dialect.mysqldialect</property> <!-- 常见其它配置 --> name="hibernate.show_sql">true</property> <!-- 控制台上打印 SQL --> name="hibernate.format_sql">true</property> <!-- 控制台输出时, 对 SQL 语句格式化 --> <!-- 在核心配置文件中引用 mapping 映射文件 --> <mapping resource="cn/itcast/domain/employee.hbm.xml"/> </session-factory> </hibernate-configuration> (2) 使用第一题中已存在的 Employee.java 文件和 Employee.hbm.xml 映射文件 (3) 在 cn..itcast.test 包下编写 java 程序实现增删改操作, 代码如下 package cn.itcast.test; import org.hibernate.session; import org.hibernate.sessionfactory; import org.hibernate.transaction; import org.hibernate.cfg.configuration; import org.junit.test; import cn.itcast.domain.employee; public class Test2 { // 添加一条 name= tom,age=26,city= 北京 的员工数据 public void test21(){ Configuration cfg = new Configuration().configure(); // 手动开启事务 Transaction transaction = session.begintransaction(); // 创建实例对象 Employee e = new Employee(); e.setname("tom"); e.setage(26); e.setcity(" 北京 ");

// 保存并提交 session.save(e); transaction.commit(); // 关闭缓存 sessionfactory.close(); // 修改 id 为 1 的员工,name= joe,sex= 男 public void test22(){ Configuration cfg = new Configuration().configure(); // 手动开启事务 Transaction transaction = session.begintransaction(); // 获取 id 为 1 的员工对象 Employee e = (Employee) session.get(employee.class,1); e.setname("joe"); e.setsex(" 男 "); session.update(e); transaction.commit(); // 关闭缓存 sessionfactory.close(); // 删除 id=1 的员工 public void test23(){ Configuration cfg = new Configuration().configure(); // 手动开启事务 Transaction transaction = session.begintransaction(); // 获取 id 为 1 的员工对象 Employee e = (Employee) session.get(employee.class,1); // 删除 session.delete(e); transaction.commit(); // 关闭缓存 sessionfactory.close();

------------------- 第 3 题 ------------------- 3 使用 Criteria 对象, 查询 employee 表 (1) 使用第 2 题中的 hibernate.cfg.xml Employee.java Employee.hbm.xml 文件 (2) 执行以下 sql 语句直接插入两条员工数据 (name= tom,age=34 和 name= joe,city= 西安 ), sql 语句如下 insert into employee (name,age) values('tom',34); insert into employee (name,city) values('joe',' 西安 '); (3) 使用 uniqueresult() 方法查询 id=2 的员工数据, 代码如下 package cn.itcast.test; import org.hibernate.criteria; import org.hibernate.session; import org.hibernate.sessionfactory; import org.hibernate.cfg.configuration; import org.hibernate.criterion.criterion; import org.hibernate.criterion.restrictions; import org.junit.test; import cn.itcast.domain.employee; public class Test3 { // 使用 uniqueresult() 方法查询 id=2 的员工数据 public void test31(){ Configuration cfg = new Configuration().configure(); // 创建 Criteria 对象 QBC 的查询方式 Criteria criteria = session.createcriteria(employee.class); // 设置条件 Criterion criterion = Restrictions.eq("id", 2); criteria.add(criterion); Employee e = (Employee) criteria.uniqueresult(); System.out.println(e); // 关闭缓存 sessionfactory.close(); (4) 使用 Restrictions.eq() 方法获取 name= tom 的员工数据, 代码如下 package cn.itcast.test; import org.hibernate.criteria;

import org.hibernate.session; import org.hibernate.sessionfactory; import org.hibernate.cfg.configuration; import org.hibernate.criterion.criterion; import org.hibernate.criterion.restrictions; import org.junit.test; import cn.itcast.domain.employee; public class Test3 { // 使用 Restrictions.eq() 方法获取 name= tom 的员工数据 public void test32(){ Configuration cfg = new Configuration().configure(); // 创建 Criteria 对象 QBC 的查询方式 Criteria criteria = session.createcriteria(employee.class); // 设置条件 Criterion criterion = Restrictions.eq("name", "tom"); criteria.add(criterion); List<Employee> list = criteria.list(); // 遍历输出 for(employee e:list){ System.out.println(e); // 关闭缓存 sessionfactory.close();