您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页javaweb程序设计教程课后答案(可编辑)

javaweb程序设计教程课后答案(可编辑)

来源:爱go旅游网
java web程序设计教程课后答案

第1章 Web应用开发简介 习题答案

1.Web在组成上包括______和______两部分。 答案: 服务器 客户端

2.谈谈对面向对象的认识。 答案:

面向对象将将要解决的问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙解决问题中的各个步骤中的行为。面向对象编程方式是建立在面向过程编程方式基础上,其最重要的改变在于面向对象编程中,程序将围绕被操作的对象来设计,而不是操作本身。面向对象编程方式以类作为构造程序的基本单位,具有封装、抽象、继承、多态性等特点。

3.介绍几种常用的框架技术。 答案:

Java中常用的框架。 1.Struts

Struts是Apache 基金会Jakarta 项目组的一个开源项目,是一

个基于Sun J2EE平台的MVC框架,它将Servlet和JSP标签作为实现自身功能的一部分。

2.WebWork

WebWork是由OpenSymphony组织开发的,是一个基于Web的MVC框架。它在运行时通过Interceptor()自动应用,因此脱离了Action类。

3.Struts 2

Struts 2是Apache基金会的一个开源项目,它建立在Struts框架与WebWork框架基础之上,继承了二者的优点,是目前非常流行的一个Web框架。

4.Spring

Spring是一个以IoC和AOP为核心的轻量级容器框架。它提供了一系列的Java EE开发解决方案,包括表示层的Spring MVC、持久层的Spring JDBC以及业务层事务管理等众多的企业级应用技术。

5.Hibernate

Hibernate是一个ORM(对象关系映射)框架,它对JDBC进行了轻量级的封装。通过使用Hibernate框架,开发人员能够以面向对象的思维方式来操作数据库。

6.Ibatis

相对于Hibernate而言,Ibatis是一个“半自动化”的ORM实现框架,它主要致力于POJO与SQL之间的映射关系,是对“全自动化”ORM框架的一种有益补充。

7.EasyJWeb

EasyJWeb是一个核心基于模板技术实现的MVC框架,主要致力于Java Web应用程序的快速开发。

4.IDE的用途是什么? 答案:

IDE是一种用于辅助开发人员开发应用程序的应用软件,它一般包括代码编辑器、编译器、调试器和图形用户界面工具,有的还包括版本控制系统、性能分析器等更多工具,因此IDE也就具有了编写、编译、调试等多种功能。正是基于这些功能,使用IDE能够减少项目的开发周期,减轻程序员的工作量,提高应用程序的开发效率等。

5.Web应用服务器的用途是什么?

Web应用服务器是为创建、部署、运行以及管理Web应用提供多种运行时服务(如事务、安全等等)的分布式系统,它是应用程序运行的一个基本环境。

第2章 Java EE运行及开发环境 习题答案

1.配置JDK环境变量时,需要编辑______变量,需要新增______变量和_______变量。

答案: Path Java_Home classpath

2.Tomcat的启动和停止程序位于其安装路径的______文件夹中。 答案: bin

3.Tomcat中______文件用于配置服务器端口连接等信息。 答案: server.xml

4.在MyEclipse中,打开MyEclipse-______-Tomcat结点,选择Tomcat6.0结点,进入Tomcat6.0配置界面。

答案: Servers

5.以下三个选项,______用于工程的发布。 答案: 1

第3章 JSP和Servlet 习题答案 (1)JSP

___,___,___,___,___,___,___,___,___。

答案: request对象 response对象

session对象 out对象 page对象 application对象 pageContext对象 config对象 exception对象

(2)画出JSP的工作原理图? 答案:

JSP的工作原理图: (3)page指令的作用? 答案:

page指令用于定义JSP页面中的全局属性。 (4)jsp:useBean指令的作用? 答案:

jsp:useBean指令用来在JSP页面内创建一个JavaBean实例。 (5)load-on-startup元素的作用? 答案:

load-on-startup元素用于要求服务器启动时就加载和初始化Servlet。

(6)举一个声明的例子。

%! int number0;//声明一个变量public int getNumint i//声

明一个方法 return i;

%

第4章 SQL与JDBC 习题答案

1.简述SQL的组成部分。 答案:

SQL语言由以下3部分组成,分别是:

数据库模式定义语言DDL:CREATE、DROP、ALTER等语句。 数据操纵语言DML:INSERT、UPDATE、DELETE、SELECT语句。 数据控制语言:GRANT、REVOKE、COMMIT、ROLLBACK等语句。 2.简述JDBC的执行步骤。 答案:

(1)加载JDBC驱动程序

通过静态类Class类加载数据库驱动。 (2)取得数据库连接

通过DriverManager类中的getConnection获取数据库的连接对象Connection

(3)执行各种SQL语句

将Connection对象转换成Statement对象,通过该对象的executeUpdate执行添加、修改以及删除的SQL语句。

(4)获取查询结果

将Connection对象转换成Statement对象,通过该对象的

executeQuery执行查询的SQL语句,该方法返回ResultSet对象。

(5)关闭数据库连接

通过Connection对象的close方法关闭数据库连接,并抛出异常。

3.Statement对象可以处理哪些类型的SQL语句,处理这些SQL语句的主要方法是什么?

答案:

Statement接口的executeUpdateString sql方法将执行添加(insert)、修改(update)和删除(delete)的SQL语句,执行成功后,将返回一个int型数值,该数值为影响数据库记录的行数。该接口还可以通过executeQuery方法查询的SQL语句。

4.PreparedStatement对象可以处理哪些类型的SQL语句,处理这些SQL语句的主要方法是什么?

答案:

PreparedStatement接口的executeUpdateString sql方法将执行添加(insert)、修改(update)和删除(delete)的SQL语句,执行成功后,将返回一个int型数值,该数值为影响数据库记录的行数。该接口还可以通过executeQuery方法查询的SQL语句。

5.CallableStatement对象可以处理哪些类型的SQL语句,处理这些SQL语句的主要方法是什么?

答案:CallableStatement接口的executeUpdateString sql方法将执行添加(insert)、修改(update)和删除(delete)的数据库的

存储过程,执行成功后,将返回一个int型数值,该数值为影响数据库记录的行数。该接口还可以通过executeQuery方法查询的数据库存储过程。

6.在SQL Server数据库系统中,创建一个数据库,并且在该数据库下创建学生信息表,含有学生的基本信息,并通过JDBC实现对该数据表内容实现添加、修改、删除和查询的操作。

答案:

JDBC的代码如下: import java.sql.*;

public class JDBConnection

private final String dbDrive\"//.c.Driver\"; private final String url \"jdbc:////0>. private final String userName \"sa\"; private final String password \"\"; private Connection con null;

public JDBConnection //通过构造方法加载数据库驱动 try //.Instance;

catch Exception ex //.ntln\"数据库加载失败\";

public boolean creatConnection //创建数据库连接 try con password;

con.setAutoCommittrue; catch SQLException e

return true;

public boolean executeUpdateString sql //对数据表的增加、修改和删除的操作

if con null creatConnection; try

Statement stmt con.createStatement; int iCount stmt.executeUpdatesql;

//.ntln\"操作成功,所影响的记录数为\" + String.valueOfiCount;

return true;

catch SQLException e return false;

DriverManager.getConnectionurl,

userName,

public ResultSet executeQueryString sql //对数据库的查询操作

ResultSet rs; try if con null creatConnection;

Statement stmt con.createStatement; rs stmt.executeQuerysql; return null; catch Exception e return null;

return rs;

public void closeConnection//关闭数据库连接 ifconnull try con.close;

catch SQLException e

将MYSQL数据库驱动的类包加载在工程中后,读者可以通过上代码,调用相应的方法,实现对学生信息表进行各种操作。

第5章 Struts 2框架入门 习题答案

1.简单介绍MVC设计模式。 答案:

MVC英文为Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成3个层:模型层、视图层和控制层,从而可以使同一个应用程序使用不同的表现形式。

2.简单介绍Struts 2的工作流程。 答案:

Struts 2框架的基本工作流程如下图所示: Struts 2工作流程图

对Struts 2工作流程的详细说明如下:

(1)客户端初始化一个指向Web容器(例如Tomcat)的请求。 (2)请求经过一系列的过滤器(Filter)的过滤并传递给

FilterDispatcher。

(3)FilterDispatcher接收到请求信息后,会根据URL在ActionMapper中搜索指定Action的映射信息。

(4)如果找到符合的映射信息,ActionProxy通过Configuration Manager在配置文件“struts.xml”中搜索被请求的Action类。

(5)ActionProxy创建一个被请求Action的实例,该实例将用来处理请求信息。

(6)如果在“struts.xml”文件中存在与被请求Action相关的配置,那么该Action的实例被调用的前后,这些也会先被执行。

(7)Action对请求处理完毕以后返回一个逻辑视图,由此逻辑视图寻找对应的物理视图(可以是JSP、Velocity模板、FreeMarker模板等),并返回给客户端。

3.在创建Action类时,需要注意哪些方面? 答案:

在Struts 2中,Action可以以多种形式存在:普通的Java类、实现Action接口和继承ActionSupport类。

在Action类中通常包含以下内容:

无参数的execute方法:用于处理用户请求。

私有属性及其属性的set、get方法:Action类中封装HTTP请求参数,因此私有属性的名称应和HTTP请求参数的名称保持一致;程序通过属性的set、get方法来处理请求参数,所以必须提供属性的set、

get方法。

4.使用不同的结果类型时,需要如何配置? 答案:

在Struts 2应用程序中,所有的Action类在处理完成之后返回的都是一个字符串类型的结果,这个结果作为一个逻辑视图而存在。Struts 2框架正是通过这个字符串,在“struts.xml”配置文件中将逻辑视图与物理视图建立起映射关系,而这一实现是由元素来声明的。

元素的type属性用于指定结果的类型,而且默认情况下为JSP文件。当需要使用不同的结果类型时,将type属性的值设置为相应的结果类型即可。

5.“struts.xml”文件中元素都有哪些属性?作用是什么? 答案:

元素用来配置Action,它包含的属性如下表所示: 属性名称 是否必须 功能描述 name 是 请求的Action名称

class 否 Action处理类对应具体路径 method 否 指定Action中的方法名

converter 否 指定Action使用的类型转换器 第6章 Struts 2进阶 习题答案

如何部署和添加?

答案:

使用元素的子元素引入指定的,在引入时需指定该的名称及其实现类。下面是部署的示例代码:

package name\"default\" extends\"struts-default\"

!-- 部署timer -- interceptor name\"timer\"

class\"//.rk2.interceptor.TimerInterceptor\" /

!-- 省略配置Action的代码 --

使用元素的子元素interceptor-ref加入所需。下面是添加的示例代码:

package name\"default\" extends\"struts-default\" !-- 省略部署的代码-- !-- 添加 --

action name\"timerAction\" class\"//.erAction\" /success.jsp

interceptor-ref name\"timer\" /

继承类______或类______可实现自定义类型转换器。 答案:

DefaultTypeConverter StrutsTypeConverter

在使用元素时,通过_____元素来引入要使用的校验器。 答案:

field-validator

在Struts 2应用中如何实现国际化? 答案:

实现国际化的步骤:

(1)创建国际化资源文件,例如sunyang_zh_CN.properties、sunyang_en_US.properties。

(2)在资源文件中添加需要国际化的内容,例如 hello你好 hellohello

(3)配置国际化资源文件,可将资源文件配置为全局范围、包范围或Action范围。

(4)调用国际化资源文件,在应用中使用不同的方式来获得国际化资源信息。

在Struts 2应用中如何实现文件上传? 答案:

实现文件上传的步骤:

(1)如果需要,在struts.properties文件中重新配置上传解析器。

(2)在Action类中封装与上传文件相关的属性,例如: public class UploadAction extends ActionSupport private String title; // 上传文件标题 private File pic;// 上传文件

private String picContentType; // 上传文件类型 private String picFileName;// 上传文件名 private String savePath;// 上传文件保存路径 public void setSavePathString savePath this.savePath savePath;

// 返回文件上传路径 private String getSavePath HttpServletRequest ServletActionContext.getRequest;

return request.getRealPathsavePath;

//省略其他属性的set、get方法

request

public String execute throws Exception setSavePath\"\";// 将上传文件存储路径设为空

FileOutputStream fos new FileOutputStreamgetSavePath + \"\\\\\"

+ getPicFileName; // 以上传文件存放路径和原文件名建立一个输出流

FileInputStream fis new FileInputStreamgetPic;// 以上传文件建立一个输入流

byte[] buffer new byte[1024]; int len 0;

while len fis.readbuffer 0

fos.writebuffer, 0, len; // 将上传文件写入到输出流所对应的文件中

return SUCCESS;

(3)将用于实现文件上传的Action类进行相关的配置,配置方式和普通的Action类相同。

第7章 Struts 2中应用模板语言 习题答案

1.Velocity中属性引用的赋值方式都有哪些?。

答案:

Velocity中属性引用的赋值方式有两种: 使用Hashtable对象赋值。 使用方法赋值。

2.简述几种Velocity的指令及其用法。 答案:

下面是几种常见的Velocity指令: set指令:给引用赋值。

使if/elseif/else指令:类似于Java语言中的if„elseif„else指令,可进行条件控制。

set指令:给引用赋值。 foreach指令:进行遍历循环。 macro指令:用来定义宏。

3.简述FreeMarker的宏指令及其用法? 答案:

在FreeMarker中,宏是一个用户自定义指令,定义完宏后就可以在模板中用@来使用宏。宏是使用macro指令来定义的。例如使用下面的代码定义宏:

#macro book bookname 书的名字:$bookname /#macro

使用下面的代码在模板中使用宏:

#macro book bookname 书的名字:$bookname @book bookname\"JSP教程\"/ 4.在FreeMarker中如何格式化数字? 答案:

在FreeMarker中可使用#expre;format这种形式格式化数字,其中的format使用mN或MN表示,mN代表小数部分最小N位,MN代表小数部分最大N位。

5.使用Velocity模板在控制台输出一本图书的相关信息。 实例内容:在控制台输出图书的id、图书的名称、图书的作者、图书的价格、图书的出版社、图书的 出版日期,要求使用方法赋值的方式给各个属性赋值。

答案:

(1)创建一个Java工程,名称为booksys,导入工程所需的jar文件velocity-dep-1.5.jar。

(2)在工程下创建模板文件showBookInfo.vm,该模板文件可输出图书的相关信息,模板文件的代码如下:

图书id: $book.bookid 图书名称:$book.bookname 图书作者:$book.bookauthor 图书价格:$book.bookprice 出版社: $book.bookcencern

出版日期:$book.bookdate

(3)在工程的sunyang包下创建一个类Book.java,该类为一个JavaBean,代表图书的相关信息。类Book的代码如下:

public class Book

private int bookid; //id号 private String bookname; //书名 private String bookauthor; //作者 private double bookprice; //价格 private String bookcencern; //出版社 private String bookdate; //出版日期 public int getBookid return bookid;

public void setBookidint bookid this.bookid bookid; public String getBookname return bookname;

public void setBooknameString bookname this.bookname bookname; public String getBookauthor return bookauthor;

public void setBookauthorString bookauthor this.bookauthor bookauthor;

public double getBookprice return bookprice;

public void setBookpricedouble bookprice this.bookprice bookprice; public String getBookcencern return bookcencern;

public void setBookcencernString bookcencern this.bookcencern bookcencern; public String getBookdate return bookdate;

public void setBookdateString bookdate this.bookdate bookdate;

(4)在工程的sunyang包下创建一个类BookVelocity.java,该类用来给模板提供值。类BookVelocity的代码如下:

import //.ingWriter;

import //.ocity.VelocityContext; import //.//.ocity; public class BookVelocity

public static void mainString[] args try

Velocity.init;//初始化Velocity引擎 catch Exception e

e.printStackTrace;

VelocityContext context new VelocityContext;// 初始化Velocity上下文Book booknew Book;//给Book属性赋值 book.setBookid200803;

book.setBookname\"JSP教程\"; book.setBookauthor\"sunyang\"; book.setBookprice53.2;

book.setBookcencern\"XX出版社\"; book.setBookdate\"2008-02-03\";

context.put\"book\book;//将Book对象放入Velocity上下文中

StringWriter writer new StringWriter; try

//把模板和上下文结合起来

Velocity.mergeTemplate\"showBookInfo.vm\\"GBk\context, writer; catch Exception e

e.printStackTrace;

//.ntlnwriter.toString;//控制台上输出 (4)运行程序,控制台上的输出结果如下图所示: 6.使用FreeMarker编写一个用户登录实例。

实例内容:当用户在登录页面中没有输入任何信息就登录时,提示用户需要输入用户名和密码方可登录,若用户输入错误的用户名或

密码,提示用户输入的用户名或密码错误,若用户输入正确的用户名和密码,登录成功,页面跳转到欢迎用户登录页面。

(1)创建一个Web工程,名称为login,导入工程所需的jar文件, (2)在WebRoot下新建一个文件夹freemarker,在freemarker创建模板文件login.ftl、welcome.ftl和error.ftl,其中login.ftl为用户登录页面,welcome.ftl为欢迎页面,error.ftl为登录失败页面。login.ftl的代码如下:

登录页面

用户登录

form action\"login\" name\"loginForm\" method\"post\" table align\"center\" 用户名

input type\"text\" name\"username\"/ 密码

input type\"password\" name\"password\"/

input type\"submit\" name\"submit\" value\"登录\"/

welcome.ftl的代码如下: 欢迎页面 欢迎你:$usernameerror.ftl的代码如下: 失败页面 $message(3)在工程的sunyang包下创建一个Servlet类LoginFreeMarker.java,该Servlet类用来进行用户登录判断,若用户登录成功,页面则转向欢迎页面,否则转向登录失败页面,类 LoginFreeMarker的代码如下:

import //.xception; import //.ter; import //.hMap; import //.;

import //.vletException; import //.p.HttpServlet; import //.p.HttpServletRequest; import //.p.HttpServletResponse; import //.figuration; import //.plate;

import //.plateException;

public class LoginFreeMarker extends HttpServlet

private Configuration configuration; //初始化FreeMarker配置public void init

configuration new Configuration;// 创建Configuration实例

configuration.setServletContextForTemplateLoadinggetServletContext,

\"freemarker\";// 指定模板的位置在freemarker目录下 protected

void

doGetHttpServletRequest

req,

HttpServletResponse resp

throws ServletException, IOException doPostreq, resp; protected

void

doPostHttpServletRequest

req,

HttpServletResponse resp

throws ServletException, IOException

MapString, Object data new HashMapString, Object;// 建立数据模型

String usernamereq.getParameter\"username\"; String passwordreq.getParameter\"password\"; Template tnull;

ifusername.equals\"sunyang\"&&password.equals\"123456\" data.put\"username\将用户信息放入数据模型中t configuration.getTemplate\"welcome.ftl\";// 加载模板文件

else

//将提示信息放入数据模型中

data.put\"message\\"输入的用户名或密码错误\"; t configuration.getTemplate\"error.ftl\";// 加载模板文件

//在页面里使用模板的charset, //使用text/6>html MIME-type

resp.setContentType\"text/html; charset\" + t.getEncoding; Writer out resp.getWriter; try

t.processdata, out;//将数据传向模板,处理并输出数据 catch TemplateException e e.printStackTrace;

(4)在web.xml中配置LoginFreeMarker,配置的代码如下: xml version\"1.0\" encoding\"UTF-8\" web-app version\"2.5\" xmlns\"////. xmlns:xsi\"////.

xsi:schemaLocation\"////.////. !--配

servlet

--servlet-nameLoginFreeMarker/servlet-name

servlet-classsunyang.LoginFreeMarker/servlet-class !--配置servlet映射 --

servlet-mapping

servlet-nameLoginFreeMarker/servlet-name url-pattern/freemarker/login/url-pattern /servlet-mapping /web-app

(5)发布并运行程序,登录页面的界面如下图所示:

如果用户输入错误的用户名和密码,单击【登录】按钮则显示如下图所示的界面:

如果用户输入的用户名和密码正确,则显示如下图所示的界面: 第8章 初识Hibernate框架 习题答案 1.什么是ORM? 答案:

ORM就是对象关系映射。其中的“O”代表的就是对象(object),“R”代表的是关系“relation”,M代表的是映射“mapping”。其原理就是将对象与表、对象的属性与表的字段分别建立映射关系。

2.Hibernate有那些配置文件?这些配置文件都使用什么语法配置?

答案:

HIbernate有两个配置文件。一个配置文件是//.,使用XML语法来配置数据库连接等信息,或者hibernate.properties,使用‘名称’‘值’的形式配置。

HIbernate的另一个配置文件是映射文件,用来经数据表中的字

段信息映射项目中创建的持久化的属性信息。这样才能使用HIbernate的ORM机制,操作持久化类对象属性的同时就可以对数据中的数据进行更改。

3.简述在Hibernate中使用的映射关系类型。 答案:

映射关系类型如下表所示:

数据表字段类型 Java数据类型 Hibernate映射类型 INT int、//.eger integer TINYINT byte、//.e byte SMALLINT short、//.rt short BIGINT long、//.g long TINYINT byte、//.e byte BIGINT long、//.g long FLOAT float、//.at float DOUBLE double、//.ble double NUMERIC //.Decimal big_decimal CHAR char、//.racter character CLOB //.ing text VARCHAR //.ing string //.ss class //.ale locale //.eZone timezone

//.rency currency BIT boolean、 //.lean boolean DATE //.e、//.e date //.endar calendar_date TIME //.e、//.e time TIMESTAMP //.e、 //.estamp timestamp //.endar calendar

VARBINARY、BLOB byte[] binary //.ializable serializable CLOB //.b clob //.b blob

4.Hibernate中用于开始使用Hibernate的入口配置类是什么? 入口类是Configuration,该类用来读取HIbernate的配置文件并实例化SessionFactory对象等。该类的实例化代码如下。

使用属性文件配置HIbernate时:Configuration confignew Configuration;

使用配置文件配置HIbernate时:Configuration confignew Configuration.configrue;

5.Hibernate中的关联关系都有哪些?

实体之间通过关系来相互关联,关系之间有一对一(1:1)、一对多

(1:n)和多对多(n:m)的关系。

第9章 Hibernate查询 习题答案 Hibernate

为:_______,________,________,__________。

答案: 立即检索 延迟检索 预先检索 批量检索

请简述Hibernate中的查询方式以及它们分别在什么样的场合下使用。

答案:

HQL:适用于较多的静态检索时。 QBC:适用于动态条件检索时。

原生SQL:适用于通过SQL才可以进行检索的特殊数据库时。 请简述Hibernate一对多关联查询时应该注意的问题。“一”的一方如何配置,“多”的一方如何配置。

答案:

HIbernate的一对多关联时,必须正确的配置属性和数据库的主外键,否则HIbernate的不能进行关联查询。

Hibernate中对这种一对多,多对一的处理方式为,使

用,one-to-many,many-to-one元素来实现。

关系实体中的“一”的配置:

首先在持久化类BookInfoVo中定义关联表的外键bookno,定义的属性使用Set类型,同时需要实例化,代码为:private Set bookno new HashSet;

同时要生成该对象的getter和setter方法。

在配置文件中通过元素来配置one-to-many,配置的详细代码为。 标签中的name:配置的就是在持久化类中配置的Set类型的bookno;

:该标签配置的是关联表的外键。

one-to-many:标签配置的是一对多关系中关联的多的一方的持久化类的全路径。

“多”的配置:

首先在持久化类BookNO中配置“一”的持久化类类型的对象,不需要实例化。代码如下,同时生成该对象的getter和setter方法。

private BookInfoVo bookinfovo ;

接下来在该持久化类对应的配置文件中配置标签,代码中的关键字描述如下。

name:图书编号持久化类中配置的BookInfoVo类型的对象bookinfovo。

column:配置的图书编号表当中关联图书信息表的外键。 class:配置的是图书编号表的关联表持久化类的全路径。

简答多对多关联查询时,如何获得对方的属性信息。 答案:

多对多关联时,可以使用对象的getXXX()方法来获得关联对象集。获得的对象集是Set类型的,可以通过迭代的方式获得每一个对象的实例。

下面的代码中使用的是那种查询方式? set

name\"bookno\"

cascade\"all-delete-orphan\"

inverse\"true\" lazy\"false\"

key column\"book_id\" /

one-to-many class\"//.ain.BookNo\" /

代码中配置的是一对多关联关系中的“一”的一方。 第10章 Hibernate性能优化 习题答案

1.什么是事务?事务的四个特性是什么? 答案:

事务Transaction是访问数据库时,可能更新数据库中各种数据项的一个程序执行单元。

事务的四个基本特性是原子性、一致性、隔离性、持久性。 2.简述Hibernate的支持的事务类型。 答案:

HIbernate中支持JDBC的事务类型和JTA事务类型。JDBC事务类型是HIbernate封装了的原始的JDBC事务,JTA事务类型是由容器

来控制的事务类型。

3.Hibernate默认支持的事务类型是哪种,如何使用? 答案:

HIbernate默认使用的事务类型是JDBC。不指定事务类型时使用就是JDBC的事务。代码中使用JDBC事务如下:

//实例化Configure类

Configuration confignew Configuration; „„

//建立Session工厂

sessionFactoryconfig.buildSessionFactory; //开启会话

Session sessionsessionFactory.openSession; //定义事务处理对象 Transaction txnull; try //开始事务

txsession.beginTransaction; tx.begin; „„ //提交事务 txmit;

catchException e

e.printStackTrace;//回滚事务 tx.rollback; finally //关闭Session session.close; 4.

是:_____,______,________,________。

答案:

第一类丢失更新 脏读 虚读 不可重复读 第二类丢失更新

5.Hibernate中的一级缓存在什么情况下提交?

HIbernate中的一级缓存是事务级别的,当事务被提交后,缓存被清空。

6.如下的代码中使用了Hibernate中的哪种事务类型,第几级缓存?程序中的数据在执行哪句代码时被更新?为什么要考虑更新缓存中的数据?

// 实例化Session

Session session sessionFactory.openSession; // 定义事务处理对象

Transaction tx session.beginTransaction; // 开始事务 tx.begin;

// 保存图书信息数据

for int i 0; i 50000; i++ BookInfoVo book new BookInfoVo; session.savebook; if i % 100 0 session.flush;

sess

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务