Hibernate最新练习题

Hibernate最新练习题
Hibernate最新练习题

Hibernate练习题

1.一般情况下,关系数据模型与对象模型之间有哪些匹配关系(多选)ABC

A)表对应类

B)记录对应对象

C)表的字段对应类的属性

D)表之间的参考关系对应类之间的依赖关系

2.试述load()和get()的区别。

1.从返回结果上对比:

load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常

get方法检索不到的话会返回null

2.从检索执行机制上对比:get方法和find方法都是直接从数据库中检索而load方法的执行则比较复杂首先查找session的persistent Context中是否有缓存,如果有则直接返回如果没有则判断是否是lazy,如果不是直接访问数据库检索,查到记录返回,查不到抛出异常如果是lazy则需要建立代理对象,对象的initialized属性为false,target属性为null 在访问获得的代理对象的属性时,检索数据库,如果找到记录则把该记录的对象复制到代理对象的target上,并将initialized=true,如果找不到就抛出异常。

hibernate对于load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,如果在使用过程中发现了问题,只能抛异常;而对于get方法,hibernate一定要获取到真实的数据,否则返回null。

3.简述使用Hibernate完成持3久化操作的3个准备和7个步骤。

1.创建Congfigure对象。读取并解析配置文件(相当于使用数据源(DataSource)获取连接前读取DataSource的配置文件):Configuration conf=new Configuration().configure();

2.读取并解析映射信息,创建SessionFactory(相当于创建了数据源(DataSource)对象),它是产生Session 对象实例的工厂,它是唯一的。:SessionFactory sf=conf.buildSessionFactory();

3.创建Session对象,打开session(相当于JDBC获得数据库的连接):Session

session=sf.openSession();

4.开始一个事务(增删改必须,查可选):tx=sessionl.beginTransaction();

5.持久化操作:session.save(user);

6.结束事务:https://www.360docs.net/doc/469255625.html,mit();

7.关闭session,释放数据库的链接:session.close();

三个准备如下:

1.需要的jar包

2.Hibernate配置文件

3.实体类和映射文件

注:于JDBC类似,持久化操作要放在try{}语句块中,如果发生异常则将事物回滚。关闭session的语句放在finally{}语句块中。

4.在持久化层,对象分为哪些状态?(多选)ACD

A)临时状态

B)独立状态

C)游离状态

D)持久化状态

5.事务隔离级别是由谁实现的?(单选)C

A)Java应用程序

B)Hibernate

C)数据库系统

D)JDBC驱动程序

6.假设对Customer类的orders集合采用延迟检索策略,编译或运行以下程序,会出现什么情况(单选)C

Session session=sessionFactory.openSession();

tx = session.beginTransaction();

Customer customer=(Customer)session.get(Customer.class,new Long(1));

https://www.360docs.net/doc/469255625.html,mit();

session.close();

Iterator orderIterator=customer.getOrders().iterator();

A)编译出错

B)编译通过,并正常运行

C)编译通过,但运行时抛出异常

7.以下程序代码对Customer的name属性修改了两次:

tx = session.beginTransaction();

Customer customer=(Customer)session.load(Customer.class,

new Long(1));

customer.setName(\"Jack\");

customer.setName(\"Mike\");

https://www.360docs.net/doc/469255625.html,mit();

执行以上程序,Hibernate需要向数据库提交几条update语句?(单选)B

A)0 B)1 C)2 D)3

8.以下关于SessionFactory的说法哪些正确?(多选)BC

A)对于每个数据库事务,应该创建一个SessionFactory对象

B)一个SessionFactory对象对应一个数据库存储源。

C)SessionFactory是重量级的对象,不应该随意创建。如果系统中只有一个数据库存储源,只需要创建一个。

D)SessionFactory的load()方法用于加载持久化对象

9.Customer类中有一个Set类型的orders属性,用来存放Order订单对象,在Customer.hbm.xml文件中,用哪个元素映射orders属性?A

A) B) C) D)

10.元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade属性应该取什么值?(单选)D

A)none B)save C)delete D)save-update

11.试述Hibernate有哪些检索方式?

HQL检索方式

QBC检索方式

本地SQL检索方式

12.对于以下程序,Customer对象在第几行变为游离状态?(单选)F Customer customer=new Customer(); //line1

customer.setName(\"Tom\"); //line2

Session session1=sessionFactory.openSession(); //line3

Transaction tx1 = session1.beginTransaction(); //line4

session1.save(customer); //line4

https://www.360docs.net/doc/469255625.html,mit(); //line5

session1.close(); //line6

A) line1 B)line2 C)line3 D)line4

E)line5 F)line6

13.如何优化Hibernate查询性能?

1 )lazy=true,hibernate3开始已经默认是lazy=true了;lazy=true时不会立刻查询关联对象,只有当需要关联对象(访问其属性,非id字段)时才会发生查询动作。

2)二级缓存,在对象更新,删除,添加相对于查询要少得多时,二级缓存的应用将不怕n +1 问题,因为即使第一次查询很慢,之后直接缓存命中也是很快的。

14.以下程序的打印结果是什么?C

tx = session.beginTransaction();

Customer c1=(Customer)session.load(Customer.class,new Long(1));

Customer c2=(Customer)session.load(Customer.class,new Long(1));

System.out.println(c1==c2);

https://www.360docs.net/doc/469255625.html,mit();

session.close();

A)运行出错,抛出异常B)打印false

C)打印true D)运行通过,但什么都不显示

15.下面关于hibernate核心接口说明错误的是?B

A)Configuration 接口:配置Hibernate,根据其启动hibernate,创建SessionFactory

对象;

B)SessionFactory 接口:负责保存、更新、删除、加载和查询对象,是线程不安全的,避免多个线程共享同一个session,是轻量级、一级缓存;

C)Query 和Criteria 接口:执行数据库的查询;

D)Transaction 接口:管理事务。

16.下面代码的执行效果是(A )。

String hql = "from TblStudent s order by s.score desc";

Query query = session.createQuery(hql);

query.setFirstResult(0);

query.setMaxRexults(5)

return query.list();

A)返回分数最高的5个学生

B)返回分数最高的6个学生

C)返回分数最低的5个学生

D)返回分数最低的6个学生

17.下面(AB )不是Hibernate映射文件中包含的内容。(选2项)

A)数据库连接信息B)Hibernate属性参数

C)主键生成策略D)属性数据类型

18.下面是某系统中的两个实体类,依次可以得知( B )。

public class Wage{ //月工资实体类private Long wid;

private String empName; //雇员姓名

private String month; //月份

//Getter & Setter

…}

public class WageItem{ //工资项private Wage wage;

private Long iid;

private String itemName; //项目名称

private String amount; //数额

//Getter & Setter

…}

A)Wage和WageItem间存在单向一对多的关联

B)Wage和WageItem间存在单向多对一的关联

C)Wage和WageItem间存在双向一对多的关联

D)Wage和WageItem间存在双向多对一的关联

20.下面程序执行后没有报错,但数据总保存不到数据库,最可能的原因是(E)。

public static void main(String[] args){

SessionFactory sf =

new Configuration().configure().buildSessionFactory();

Session session = sf.openSession();

Medal medal=new Medal();

medal.setOwner("Lily");

medal.setSport("Table Tennis-Women 's Singles");

medal.setType("Glod Medal");

session.save(medal);

session.close();}

A)没有在配置文件中包含对映射文件的声明

B)配置文件配置有误C)映射文件配置有误D)没有对持久化操作捕捉异常E)没有开启事务21.下面(A )不属于关系-对象映射的映射信息。

A).程序包名到数据库库名的映射

B).程序类名到数据库表名的映射

C).实体属性名到数据库表字段的映射

D).实体属性类型到数据库表字段类型的映射

22. 对下面代码中存在的错误,说法不正确的是(D )。

String hql = "from TblUser u where u.status = @status";//<1>

Query query = session.createQuery();//<2>

query.setNamedParameter(":status", " ");//<3>

return query.executeQuery(hql);//<4>

A)第一行中的命名参数"@status"应该是":status"

B)第二行createQuery函数应该传入hql作为参数

C)第三行命名参数名称":status"应该是"status"

D)第四行应该是"return query.list(hql);"

23.Hibernate继承映射有哪几种方式?试对几种方式进行比较。

比较方面每个具体类一

张表每个分层结构

一张表

每个子类一张表

建立关系模型原则每个具体类对

应一张表,有多

少具体类就需

要建立多少个

独立的表

描述一个继承

关系只用一张

表,也就是说子

类所使用的表

与父类相同

每个子类使用一张表,但这些

子类所对应的表都关联到基

类所对应的表中

关系模型的优缺点这种设计方式

符合关系模型

的设计原则,但

有表中存在重

复字段的问题

缺点有二:首先

表中引入的区

分子类的字段,

也就是包括了

描述其他字段

的字段。其次,

这种设计方式完全符合关系

模型的设计原则,且不存在冗

如果某个子类的某个属性不能为空,那么在数据库一级不能设置该字段not null(非空)

可维护性如果需要对基

类进行修改,则

需要对基类以

及该类的子类

所对应的所有

表都进行修改维护起来方便,

只需要修改一

个表

维护起来比较方便,对每个类

的修改只需要修改其所对应

的表

灵活性映射的灵活性

很大,子类可以

包括基类属性

在内的每一个

属性进行单独

配置灵活性差,表中

冗余字段会随

着子类的增多

而越来越多

灵活性很好,完全是参照对象

继承的方式进行配置

查询性能对于子类的查

询只需要访问

单独的表,对父

类查询怎需要

检索所有的表在任何情况下,

都只需处理一

个表

对于父类的查询需要使用左

外链接,对于子类查询需要使

用内链接

维护性能对于单个对象

持久话操作只

需要处理一个

表对于单个对象

的持久话操作

只需要处理一

个表

对于子类的持久话至少要处

理两个表

24.什么是Hibernate的并发机制?怎么去处理并发问题?

Hibernate并发机制:

a、Hibernate的Session对象是非线程安全的,对于单个请求,单个会话,单个的工作单元(即单个事务,单个线程),它通常只使用一次,

然后就丢弃。

如果一个Session 实例允许共享的话,那些支持并发运行的,例如Http request,session beans将会导致出现资源争用。

如果在Http Session中有hibernate的Session的话,就可能会出现同步访问Http Session。只要用户足够快的点击浏览器的“刷新”,

就会导致两个并发运行的线程使用同一个Session。

b、多个事务并发访问同一块资源,可能会引发第一类丢失更新,脏读,幻读,不可重复读,第二类丢失更新一系列的问题。

解决方案:设置事务隔离级别。

Serializable:串行化。隔离级别最高

Repeatable Read:可重复读

Read Committed:已提交数据读

Read Uncommitted:未提交数据读。隔离级别最差

设置锁:乐观锁和悲观锁。

乐观锁:使用版本号或时间戳来检测更新丢失,在的映射中设置optimistic-lock=”all”可以在没有版本或者时间戳属性映射的情况下实现版本检查,此时Hibernate将比较一行记录的每个字段的状态行级悲观锁:Hibernate总是使用数据库的锁定机制,从不在内存中

锁定对象!只要为JDBC连接指定一下隔离级别,然后让数据库去搞定一切就够了。类LockMode 定义了Hibernate所需的不同的锁定级别:

LockMode.UPGRADE,LockMode.UPGRADE_NOWAIT,LockMode.READ;

25、在持久化层,对象分为哪些状态?如何转换?

(1) 临时状态(transient):刚刚用new语句创建,还没有被持久化,不处于Session 的缓存中。处于临时状态的Java对象被称为临时对象。

(2) 持久化状态(persistent):已经被持久化,加入到Session的缓存中。处于持久化状态的Java对象被称为持久化对象。

(3) 游离状态(detached):已经被持久化,但不再处于Session的缓存中。处于游离状态的Java对象被称为游离对象。

26、试述Hibernate Session接口中load()与get()、persist()与save()方法的区别。

load与get的区别

load加载的是对象的代理类,将目标对象放在自己的target属性之中,并且拥有target所有的属

性,但是值为NULL,当需要数据时

会去向target索取相应的属性值,如果target只中的值为NULL则执行数据库查询获取数据,

所以在执行load时候并无看到控制台

有sql语句打出,知道访问对象属性时候控制台才有相应的sql语句输出.

get就是即时加载,当下立刻执行获取实体类

persist,save的区别

如果使用save后不开启事务提交,事务则会回滚,但是有执行insert语句.所以数据库无发生改变,控制台却打印出了insert语句

然而persist如果不开启事务insert是不会执行的,这就是他们之间最主要的区别

27、试述Query接口list()与iterate()区别。

list方法返回的是结果集的list集合,iterate返回的是iterator迭代器。

list方法查询所有记录只发送一条sql语句,select * from 表名

iterate方法查询所有记录的话,先查询到满足条件的所有记录id,并不立即查询所有结果,当我们有用到某个记录的话,他才查询。如果显示所有记录的话需要n+1条sql语句。第一条查id,接下去根据id,一条一条查询,所以是n+1条。

list方法缓存中有记录了,他还是会发生sql语句到数据库中查询。

iterate方法缓存中有记录了,他只发送一条查符合条件的id的sql语句。

Java工程师面试题(三大框架)

Java工程师(程序员)面试题 Struts,Spring,Hibernate三大框架的面试 1.Hibernate工作原理及为什么要用? 原理:1.读取并解析配置文件2.读取并解析映射信息,创建SessionFactory 3.打开Session 4.创建事务Transation 5.持久化操作6.提交事务7.关闭Session 8.关闭SesstionFactory 为什么要用:1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。 2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作 3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。 4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。 2.Hibernate是如何延迟加载? 1. Hibernate2延迟加载实现:a)实体对象b)集合(Collection) 2. Hibernate3 提供了属性的延迟加载功能当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。 3.Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系) 类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many 4.Struts1流程: 1、客户端浏览器发出HTTP请求。 2、根据web.xml配置,该请求被ActionServlet接收。 3、根据struts-config.xml配置,ActionServlet先将请求中的参数填充到ActionForm中,然后ActionServlet再将请求发送到Action 进行处理。 4、是否验证,需要验证则调用ActionForm 的validate方法,验证失败则跳转到input,成功则继续。 5、Action从ActionForm获得数据,调用javabean 中的业务方法处理数据。 6、Action返回ActionForward对象,跳转到相应JSP 页面或Action。 7、返回HTTP响应到客户端浏览器。 MVC设计模式:modal:“模型”也称业务逻辑,是正真完成任务的代码,相当与JavaBeanview:视图,其实就是显示界面,相当于JSPcontroller:控制器,他控制模型和视图的交互过程,相当于servletstruts1是基于MVC设计模式hibernate是基于ORM对象关系映射 5.struts是什么? struts1是基于JSP和servlet的一个开源的Web应用框架,使用的是MVC的设计模式struts2是基于webwork技术的框架,是sun和webwork公司联手开发的一个功能非常齐全的框架,struts2和struts1没有任何关系,是一个全新的框架 6.spring是什么? spring是一个集成了许多第三方框架的大杂烩,其核心技术是IOC(控制反转,也称依赖注

hibernate练习题

1.下面创建Criteria对象的语句中正确的是 单选 A、Criteria c = query.createCriteria(); B、Criteria c = query.addCriteria(); C、Criteria c = session.createCriteria(); D、Criteria c = session.createCriteria(User.class); 2. Query对象执行查询结论正确的是 多选 A、list()方法返回结果为List对象,数据总量为0到多条 B、uniqueResut()方法返回结果为对象或对象数组,数据总量为0到1条数据 C、HQL:select userName from UserModel可以使用list()方法进行查询结果的获取 D、HQL:select userName from UserModel可以使用uniqueResut()方法进行查询结果的获取 3Hibernate实体对象制作规范不包含下列哪条规则 单选 A、声明无参公共的构造方法 B、提供用于作为OID的标识属性 C、为所有属性提供getter与setter方法 D、声明为最终类(final修饰) 4在HQL语句的参数查询中,执行以下代码,下列选项能够为参数正确赋值的操作是Query query = s.createQuery("from Customer o where https://www.360docs.net/doc/469255625.html,=?"); 单选 A、query.setParameter(1, "Tom"); B、query.setParameter(0, "Tom"); C、query.setString(0,Tom); D、query.setInteger (0,Tom); 5有关Hibernate瞬时对象状态说法错误的是 多选 A、瞬时状态的对象具有OID,与Session对象关联 B、瞬时状态的对象具有OID,不与Session对象关联 C、瞬时状态的对象不具有OID,与Session对象关联 D、瞬时状态的对象不具有OID,不与Session对象关联 6有关QBC查询短语,下列说法正确的 多选 A、Restrictions.between表示范围比对 B、Restrictions.eq表示等比对 C、Restrictions.le表示小于等于比对 D、Restrictions.ge表示大于等于比对 7下列操作对一级缓存的影响描述错误的是

Hibernate3.6(开发必看)

1.Java对象持久化概述 1.1.应用程序的分层体系结构 1.1.1.基于B/S的典型三层架构 说明: 1,展现层:提供与用户交互的界面。 2,业务逻辑层:实现各种业务逻辑。 3,数据访问层:负责存放和管理应用程序的持久化业务数据。 1.1. 2.数据访问层与Hibernate在Java应用程序中的 角色 数据访问层(持久化层)封装了数据访问的细节,为业务逻辑层提供了面向对象的API。完善的持久化层应该达到的目标: 1,代码重用性高,可完成所有的数据访问操作。 2,如果需要的话,能够支持多种数据库平台。 3,具有相对独立性,当持久化层变化时,不会影响上层实现。 在数据访问层(持久化层)中可以使用Hibernate框架以实现要求,如下图所示:

1.2.软件模型 1.2.1.各种模型的说明 概念模型: 模拟问题域中的真实实体。描述每个实体的概念和属性及实体间关系。不描述实体行为。实体间的关系有一对一、一对多和多对多。。 关系数据模型: 在概念模型的基础上建立起来的,用于描述这些关系数据的静态结构。有以下内容组成:1,若干表 2,表的所有索引 3,视图 4,触发器 5,表与表之间的参照完整性

域模型: 在软件的分析阶段创建概念模型,在软件设计阶段创建域模型。 组成部分: 1,具有状态和行为的域对象。 2,域对象之间的关联。 域对象(domain object): 构成域模型的基本元素就是域对象。对真实世界的实体的软件抽象,也叫做业务对象(Business Object,BO)。域对象可代表业务领域中的人、地点、事物或概念。 域对象分为以下几种: 1,实体域对象:通常是指业务领域中的名词。(plain old java object,简单Java 对象)。 2,过程域对象:应用中的业务逻辑或流程。依赖于实体域对象,业务领域中的动词。如发出订单、登陆等。 3,事件域对象:应用中的一些事件(警告、异常)。 1.2.2.域对象间的关系 关联: 类间的引用关系。以属性定义的方式表现。

hibernate面试题

1.Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6.提交事务 7.关闭Session 8.关闭SesstionFactory 为什么要用: 1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。 2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作 3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。 4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。 2.Hibernate是如何延迟加载? 1. Hibernate2延迟加载实现:a)实体对象b)集合(Collection) 2. Hibernate3 提供了属性的延迟加载功能 当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。 3.Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系) 类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many、 4.说下Hibernate的缓存机制 1. 内部缓存存在Hibernate中又叫一级缓存,属于应用事物级缓存 2. 二级缓存: a) 应用及缓存 b) 分布式缓存 条件:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、非关键数据 c) 第三方缓存的实现

Hibernate练习题

Hibernate&EJB考试试题 1、下面关于Hibernate说法正确的是()(选择两项) A)Hibernate是ORM的一种实现方式 B)Hibernate不要JDBC的支持 C)属于控制层 D)属于数据持久层 2、下面关于ORM的说法错误的是()(选择两项) A)对象关系映射,让现实中的对象同数据库的表产生映射(类与表产生映射) B)对象关系映射,让类同表产生关系 C)对象关系映射,让类同记录产生关系(类的实例与记录(表中的一行数据)产生关系) D)对象关系映射,让类中的属性同表中的列产生关系 3、下面关于Hibernate中Session的说法正确的是()(选择两项) A)Session是轻量级的,可以随意的创建和销毁 B)Session是重量级的,不能随意的创建和销毁 C)Session是线程安全的 D)Session不是线程安全的 4、在Hibernate中,以下()不属于session的方法 A、close() B. open() C. update() D. delete() 5、下面关于Hibernate中load和get方法说法正确的是() A)这两个方法是一样的,没有任何的区别 B)这两个方法不一样,load先找缓存,再找数据库

C)这两个方法不一样,get先找缓存,再找数据库 D)以上说法都不对 注:load()和get()都是先找缓存,再找数据库。 不同点是在检索时: load()是延迟检索,先返回代理对象,访问对象时在发出sql命令Get()是立即检索,直接发出sql命令,返回对象 6、在Hibernate中修改对象的说话错误的是() A)只能利用update方法来做修改 B)可以利用saveOrUpdate方法来做修改 C)可以利用HQL语句来做修改 D)不能利用HQL语句来修改 7、下面关于Hibernate中Transaction的使用说法正确的是()(选择两项) A)Transaction是可有可无的 B)Transaction在做查询的时候是可有可无的 C)Transaction在做修改的时候是可有可无的 D)Transaction在做修改的时候是必须的 8、使用Hibernate技术实现数据持久化时,下面()内容不在 Hibernate配置文件中配置(选择一项) A) 数据库连接信息 B) 数据库类型(dialect) C) show_sql参数 D) 数据库表和实体的映射信息

各公司Java面试题汇总

各公司Java面试题汇总 ★ 表 A 字段m ,n ,x ,y ,其中m,n 为number 类型,x 为字符类型,y 为日期类型 1 、创建表A 并且m 不能重复,n 初始值为0 ,m 、n 、y 不能为空 2 、修改表A 把n 的初始化值改为1 3 、查询表A 中m 大于500 并且y 为前一天的当前时间以前的所有数据 4 、查询表A 中x 字段共有多少种情况,并输出条数大于200 的情况的个数 5 、查询表A 中x 为空并且时间介于当前时间与前一天当前时间的所有数据 6 、往表A 中插入一条数据,令n 值为3,x 值为"xyz",y 值为200 7 年1 月1 日12 点12 分12 秒 7 、删除表A 中所有时间为整点的数据 8 、表B 与表A 有相同的数据结构,怎么样把表A 中的数据倒入表B 中 9 、数据库的锁,概念,形成原因,你所见过的所有数据库中的锁,锁的解决方案? -------------------------------------------------------------------------------------------------------------------- 1 、把“ ab ”“ ef ”“ ij ”“ cd ”“ gh ”放到List 里,然后对此List 快速排序,并打印结果 2 、表File 中有2 个字段file,vcFile,file 为1 的所相关的vcFile 的信息,用jdbc 连接数据库,并打印查询结果的第三条 4 、corba 对象里有一个void corbaPing() 怎样通过返回的一个空对象判断其状态? 5 、corb 中的COS 三种实现。 6 、WTS 的几种实现形, 文字描述即可,无需写代码。 7 、纯java 技术能否实现jmcp 协议? ----------------------------精品word文档值得下载值得拥有----------------------------------------------

Hibernate复习题1含答案

美斯坦福在线考试系统荆州理工G3 Hibernate 科目: SCCEG3Hibernate总分: 100分时间: 60分钟 一、单选题(共45题,每题2分,说明:选择一项正确的答案) 1、 下面关于Hibernate的说法,错误的是() A、Hibernate是一个“对象-关系映射”的实现 B、Hibernate是一种数据持久化技术 C、Hibernate是JDBC的替代技术他是对JDBC做了轻量级的对象封装 D、使用Hibernate可以简化持久化层的编码 参考答案: C 2、 在使用了Hibernate的系统中,要想在删除某个客户数据的同时删除该客户对应的所有订单数据,下面方法可行的是() A、配置客户和订单关联的cascade属性为save-update B、配置客户和订单关联的cascade属性为all C、设置多对一关联的inverse属性为true D、设置多对一关联的inverse属性为false 参考答案: B 详解 3、 下面一对多关联的配置中,存在哪些错误()

<敳?慮敭尽牯敤獲?湩敶獲?晜污敳?慣捳摡?瑜畲履> <one-to-many class=com.x.entity.Order column=customer_id /> </set> A、inverse属性不可以设置为false B、cascade属性不可设置为true C、汣獡?捜浯砮攮瑮瑩?牏敤屲应为type=com.x.entity.Order D、column属性不可再<one-to-many>节点内设置 参考答案: B 4、 下面创建Criteria对象的语句中正确的是() A、Criteria c = query.createCriteria(); B、Criteria c = query.addCriteria(); C、Criteria c = session.createCriteria(); D、Criteria c = session.createCriteria(User.class); 参考答案: D 5、 下面关于Hibernate映射文件配置中dynamic-update属性说法正确的是()详解 A、动态的修改,如果为true,只改变有改变的属性 B、动态的修改,如果为true,只改变没有改变过的属性 C、动态的修改,如果为true,改变所有的属性 D、以上说法都错

Hibernate学习入门教程

Hibernate学习入门教程 开发环境搭建 [日期:2015-08-11] 来源:Linux社区作者:doctorJoe [字体:大中小] 其实一两个月前就在了解Hibernate方面的知识了,但一直以来,都没有好好的总结,而且一直使用的是myeclipse,感觉有些傻瓜式的操作就可以搭建起Hibernate的开发环境,但这样一点都不好,没有理解到Hibernate到底是怎么配置的,所以你今天特使用Eclipse来一步一步搭建Hibernate的开发环境,下面,正式进入正题。 在Hibernate中开启日志https://www.360docs.net/doc/469255625.html,/Linux/2015-07/120499.htm Hibernate+JUnit测试实体类生成数据库表https://www.360docs.net/doc/469255625.html,/Linux/2015-07/120161. htm Hibernate整体理解https://www.360docs.net/doc/469255625.html,/Linux/2014-07/104405.htm Hibernate的映射机制https://www.360docs.net/doc/469255625.html,/Linux/2014-12/110265.htm 新建一个web项目,名字就随便吧,你喜欢什么名字就什么吧,这是我的截图。

引入hibernate的依赖jar包,我使用的是hibernate-release-4.3.10.Final,下载好后解压,打开压缩包下的lib目录下的require文件夹,这是hibernate的所以来的必须的jar包,接下来,在刚才新建的项目里新建一个libs文件夹,将刚才的所说的jar包copy进去,另外,由于我们需要连接MySQL数据库以及使用JUnit测试,将所需的mysql-connector-java-5.0.8-bin.jar和junit-4.5.jar两个jar包引用进去,关于这些jar包,可以在网上搜索。接下来,就是把这些jar 包添加到编译环境中去,选中libs下的jar包,右击选择Build Path –>Add to Build Path,这样就把依赖jar包成功添加进去了。 继续往下,我们需要配置最重要的hibernate配置文件hibernate.cfg.xml以及进行日志处理的log4j.properties属性文件:打开上一步解压后的hibernate文件夹,打开project—>etc文件夹,将该文件夹下的hibernate.cfg.xml和log4j.properties文件拷贝到项目的src文件夹下,打开hibernate.cfg.xml文件,将session-factory标签中的内容替换成如下的内容: org.hibernate.dialect.MySQLDialect com.mysql.jdbc.Driver jdbc:mysql:///hibernatedemo root yzp140103 这样就配置好了。 接下来,要做的就是做开发测试了:在项目的src目录下新建一个实体类包com.joe.entity,在该包下新建一个实体类Student,代码如下: package com.joe.entity; import java.io.Serializable;

javaWeb面试题(含答案)讲课讲稿

10、Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得java程序员可以随心所欲的使用对象编程思维来操纵数据库。 工作原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6.提交事务 7.关闭Session 8.关闭SesstionFactory 优点有: 1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。 2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作 3、 Hibernate使用Java反射机制而不是字节码增强程序来实现透明性。 4、 Hibernate的性能好,映射的灵活性比较出色。它支持各种关系数据库,从一对一到多 对多的各种复杂关系。 11、hibernate的核心类是什么??重要方法是什么?? Configuration、SessionFactory Session如下方法 Save、 load、 Update、Delete Query q=CreateQuery(“from Customer where customerName=:customerName”) beginTransaction、close、Transaction、Commit() 12、session.load()和session.get()的区别 Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象。其区别在于:

0421测试题

一.Java(16题) 1.关于hibernate映射文件说法正确的是() A、映射文件只能以.hbm.xml结尾 B、在hibernate.cfg.xml中使用mapping节点可以加载映射文件 C、映射文件的class节点可以没有id子节点 D、映射文件必须跟实体bean放在同目录 2.关于异常,下列说法正确的是() A、为了保证程序运行速度,要尽量避免异常控制 B、异常是一种对象 C、这些说法都不对 D、一旦程序运行,异常将被创建 3.下列哪个访问控制符作用域最小() A、private B、protected C、public D、default 4.使一个线程放弃处理器,休眠1.5秒,应调用的方法是() A、sleep(1.5) B、suspend(1500) C、sleep(1500) D、suspend(1.5) 5.要串行化某些类的对象,这些类就必须实现() A、DataOutPut接口 B、https://www.360docs.net/doc/469255625.html,parable接口 C、java.io.DataImport接口 D、Serializable接口 6.下面关于构造函数的说法不正确的是() A、构造函数不可以重载 B、构造函数也属于类的方法,用于创建对象的时候给成员变量赋值 C、构造函数没有返回值 D、构造函数一定要和类名相同 7.客户端与服务器用套接字进行连接时,可能会产生的异常是() A、IndexOutOfBoundsException B、IOException C、InterruptedException D、malformedURLException 8.java集合框架的选用,若是数据量很大,又要线程安全,应考虑使用() A、ArrayList B、HashMap C、LinkedList D、Vector 9.将键值对(key-value)保存到映射(Map)对象中的方法是() A、insert(Object key,Object value) B、get(Object key,Object value)

Spring+hibernate

课程内容 1.面向接口(抽象)编程的概念与好处 2.IOC/DI的概念与好处 a)inversion of control b)dependency injection 3.AOP的概念与好处 4.Spring简介 5.Spring应用IOC/DI(重要) a)xml b)annotation 6.Spring应用AOP(重要) a)xml b)annotation 7.Struts2.1.6 + Spring2.5.6 + Hibernate3.3.2整合(重要) a)opensessionInviewfilter(记住,解决什么问题,怎么解决) 8.Spring JDBC 面向接口编程(面向抽象编程) 1.场景:用户添加 2.Spring_0100_AbstractOrientedProgramming a)不是AOP:Aspect Oriented Programming 3.好处:灵活 什么是IOC(DI),有什么好处Dependecy Injection (依赖注入)依赖UserDAO a)IOC (inversion of control)控制反转,交给容器来控制 1.把自己new的东西改为由容器提供 a)初始化具体值 b)装配 2.好处:灵活装配 Spring简介 1.项目名称:Spring_0200_IOC_Introduction

2.环境搭建 a)只用IOC i.spring.jar , jarkata-commons/commons-loggin.jar 3.IOC容器 a)实例化具体bean b)动态装配 4.AOP支持 a)安全检查 b)管理transaction Spring IOC配置与应用 1.FAQ:不给提示: a)window – preferences – myeclipse – xml – xml catalog b)User Specified Entries – add i.Location: D:\share\0900_Spring\soft\spring-framework-2.5.6\dist\resources\sprin g-beans-2.5.xsd ii.URI: file:///D:/share/0900_Spring/soft/spring-framework-2.5.6/dist/resource s/spring-beans-2.5.xsd iii.Key Type: Schema Location iv.Key: https://www.360docs.net/doc/469255625.html,/schema/beans/spring-beans-2.5.xsd 2.注入类型 a)Spring_0300_IOC_Injection_Type b)setter(重要) c)构造方法(可以忘记) d)接口注入(可以忘记) 3.id vs. name a)Spring_0400_IOC_Id_Name b)name可以用特殊字符 4.简单属性的注入 a)Spring_0500_IOC_SimpleProperty b) 5.

6文思海辉JAVA面试问题

电话面试 1、hibernate怎么配置的,lazy和list怎么设置 2、JDBC怎么用的,有那几部,具体的方式? 3、文件的读写,步骤和具体实现代码? 4、你用的排序方式有哪些,说出你最擅长的一种排序方式? 5、xml解析方式,schema Xml的解析方式有哪几种,怎么实现解析的? 6、private,protect,default,public权限修饰符是怎么设置权限的? 7、平时你关注java的那些技术? 8、Static 9、Throws throw区别 10、Jsp servlet区别 Jsp本质上就是一个severlet jsp可能更注重前台显示而severlet则是控制 Jsp有自己的内置对象severlet没有 Jsp运行速度没有severlet快 Jsp中有htnl的代码,而severlet只是java代码 11、log4j实现 12、Hibernate or配置 13、Class.forName作用,为什么用? 14、SAX与DOM的区别 视频面试整理 1、一种排序,写出来一共排序了多少次 2、说一下Hibernate 3、如果没有Hibernate你怎么实现这样的功能?并封装成实体类 4、SAX和DOM的区别 5、事物 6、是否用过集合类 7、Set和List的区别 8、线程 9、Insert update create表 10、前台滚动条是如何实现的 11、前台滚动条,比如两个客户端,一个收到90条,一个收到91条,怎样保证两个客户下一个取到的值分别是91条和92条。 12、如果没有ssh是否能写功能 13、IO 15、JS怎样实现5秒一刷新功能 16、SWING APPLET

spring练习题

1.MVC设计模式的目的是【 D 】 A.使程序结构更清晰 B.使程序更好维护 C.保证视图和模型的隔离 D在逻辑上将视图、模型和控制器分开 2、在三层结构中,数据访问层承担的责任是【 A 】 A.定义实体类 B.数据的增删改查操作 C.业务逻辑的描述 D.页面展示和控制转发 3、下面关于数据持久化概念的描述,错误的是【 B 】 A.保存在内存中数据的状态是瞬时状态 B.持久状态的数据在关机后数据依然存在 C.数据可以由持久状态转换为瞬时状态 D.将数据转换为持久状态的机制称为数据持久化 4、下面关于Hibernate的说法,错误的是【 C 】 A.Hibernate是一个“对象-关系映射”的实现 B.Hibernate是一种数据持久化技术 C.Hibernate是JDBC的替代技术 D.使用Hibernate可以简化持久化层的编码 5、Hibernate配置文件中,不包含下面的【 A 】 A.“对象-关系映射”信息 B.连接数目 C.show_sql等参数的配置 D.数据库连接信息 6、在使用了Hibernate的系统中,要想在删除某个客户数据的同时删除该客户对应的所有订单数据,下面方法可行的是。【 B 】 A.配置客户和订单关联的cascade属性为save-update B.配置客户和订单关联的cascade属性为all C.设置多对一关联的inverse属性为true D.设置多对一关联的inverse属性为false 7、执行下面的hql查询,关于返回值的说法,正确的是。【 B 】 select https://www.360docs.net/doc/469255625.html,ername,https://www.360docs.net/doc/469255625.html,erid from https://www.360docs.net/doc/469255625.html,er u where u is not null A.语法错误,不能执行 B.返回一个类型为List的实例 C.返回一个数组 D.当返回结果只有一条时,返回一个数组 8、下面关于“依赖注入”的说法,错误的是【 D 】 A.将组件间的依赖关系采取配置文件的方式管理,而不是硬编码在代码中 B.降低了组件间的耦合,使程序更容易维护和升级 C.促进了“面向接口”编程,使构建大规模程序更轻松 D.需要定义大量接口,增加了编码复杂度 9、关于Spring的说法错误的是【 C 】 A.pack B.packet C.package D.packege 10、关于Spring AOP,下面说法错误的是【 C 】 A.支持前置通知、后置通知、环绕通知 B.采用代理的方式实现 C.在Spring2.0以前的版本中通过配置 D.与“依赖注入”实现紧密结合

JAVA面试题解惑系列(二)——到底创建了几个String对象-JAVA程序员JAVA工程师面试必看

-JAVA程序员JAVA工程师面试必看 JAVA面试题解惑系列(二)——到底创建了几个String对象? 关键字: java 面试题 string 创建几个对象 作者:臧圩人(zangweiren) 网址:https://www.360docs.net/doc/469255625.html, >>>转载请注明出处!<<< 我们首先来看一段代码: Java代码 1.String str=new String("abc"); 紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢?相信大家对这道题并不陌生,答案也是众所周知的,2个。接下来我们就从这道题展开,一起回顾一下与创建String对象相关的一些JAVA知识。 我们可以把上面这行代码分成String str、=、"abc"和new String()四部分来看待。String str只是定义了一个名为str的String类型的变量,因此它并没有创建对象;=是对变量str进行初始化,将某个对象的引用(或者叫句柄)赋值给它,显然也没有创建对象;现在只剩下new String("abc")了。那么,new String("abc")为什么又能被看成"abc"和new String()呢?我们来看一下被我们调用了的String的构造器: Java代码 1.public String(String original) { 2. //other code ... 3.} 大家都知道,我们常用的创建一个类的实例(对象)的方法有以下两种: 1.使用new创建对象。 2.调用Class类的newInstance方法,利用反射机制创建对象。 我们正是使用new调用了String类的上面那个构造器方法创建了一个对象,并将它的引用赋值给了str变量。同时我们注意到,被调用的构造器方法接受的参数也是一个String对象,这个对象正是"abc"。由此我们又要引入另外一种创建String对象的方式的讨论——引号内包含文本。 这种方式是String特有的,并且它与new的方式存在很大区别。 Java代码 1.String str="abc"; 毫无疑问,这行代码创建了一个String对象。 Java代码 1.String a="abc"; 2.String b="abc";

hibernate练习题

1、下面创建Criteria对象得语句中正确得就是 单选 A、Criteria c = query、createCriteria(); B、Criteria c = query、addCriteria(); C、Criteria c = session、createCriteria(); D、Criteria c = session、createCriteria(User、class); 2、Query对象执行查询结论正确得就是 多选 A、list()方法返回结果为List对象,数据总量为0到多条 B、uniqueResut()方法返回结果为对象或对象数组,数据总量为0到1条数据 C、HQL:select userName from UserModel可以使用list()方法进行查询结果得获取 D、HQL:select userName from UserModel可以使用uniqueResut()方法进行查询结果得获取3Hibernate实体对象制作规范不包含下列哪条规则 单选 A、声明无参公共得构造方法 B、提供用于作为OID得标识属性 C、为所有属性提供getter与setter方法 D、声明为最终类(final修饰) 4在HQL语句得参数查询中,执行以下代码,下列选项能够为参数正确赋值得操作就是Query query = s、createQuery("from Customer o where o、name=?"); 单选 A、query、setParameter(1, "Tom"); B、query、setParameter(0, "Tom"); C、query、setString(0,Tom); D、query、setInteger (0,Tom); 5有关Hibernate瞬时对象状态说法错误得就是 多选 A、瞬时状态得对象具有OID,与Session对象关联 B、瞬时状态得对象具有OID,不与Session对象关联 C、瞬时状态得对象不具有OID,与Session对象关联 D、瞬时状态得对象不具有OID,不与Session对象关联 6有关QBC查询短语,下列说法正确得 多选 A、Restrictions、between表示范围比对 B、Restrictions、eq表示等比对 C、Restrictions、le表示小于等于比对 D、Restrictions、ge表示大于等于比对 7下列操作对一级缓存得影响描述错误得就是 单选 A、执行delete操作时,如果对象不具有OID,将抛出异常 B、执行update操作时,如果对象不具有OID,将抛出异常 C、执行update操作时,如果一级缓存中已经存在有相同OID数据,将抛出异常 D、执行merge操作时,如果一级缓存中已经存在有相同OID数据,将抛出异常 8下列哪项不就是用于配置数据库连接得配置

java高级工程师面试题及答案完整版

j a v a高级工程师面试题 及答案 集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]

一:选择题 1. 关于以下程序代码的说明正确的是( D ) 1.class HasStatic{ 2. private static int x=100; 3. public static void main(String args[ ]){ 4. HasStatic hs1=new HasStatic( ); 5. hs1.x++; 6. HasStatic hs2=new HasStatic( ); 7. hs2.x++; 8. hs1=new HasStatic( ); 9. hs1.x++; 10. HasStatic.x- -; 11. (“x=”+x); 12. } 13. } A、 5行不能通过编译,因为引用了私有静态变量 B、 10行不能通过编译,因为x是私有静态变量 C、程序通过编译,输出结果为:x=103 D、程序通过编译,输出结果为:x=102 2. 下列关于for循环和while循环的说法中哪个是正确的( B ) A.while循环能实现的操作,for循环也都能实现 B.while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果C.两种循环任何时候都可替换 D.两种循环结构中都必须有循环体,循环体不能为空 3. 以下选项中循环结构合法的是( C ) A、while (int i<7) { i++; (“i is “+i); } B、 int j=3; while(j) { (“ j is “+j); } C、int j=0; for(int k=0; j + k !=10; j++,k++) { (“ j is “+ j + “k is”+ k); } D、 int j=0; do{ ( “j is “+j++); if (j = = 3) {continue loop;} }while (j<10); 4. 给出下面代码段, 哪行将引起一个编译时错误( D ) 1) public class Test {

Hibernate_测试题

medal.setType("Gold Medal"); session.save(user); session.close(); } A.配置文件配置有误 B.没有在配置文件中包含对映射文件的声明 C.映射文件配置有误 D.没有开启事务 5.下列属于多对一关系的是(bd )。(选两项) A.书和作者 B.手机和生产厂家 C.用户和发布的出租信息 D.士兵和班长 6.下面是某系统中的两个实体类,依此可以得知(b )。 public class Wage{ //月工资实体类 private Long wid; private String empName; //雇员姓名 private String month; //月份 //Getter & Setter …… } public class WageItem{ //工资项 private Wage wage; private Long iid; private String itemName; //项目名称,如基本工资、职位津贴等private String amount; //数额 //Getter & Setter …… } A.Wage 和WageItem 间存在单向一对多的关联 B.Wage 和WageItem 间存在单向多对一的关联 C.Wage 和WageItem间存在双向一对多的关联 D.Wage 和WageItem间存在双向多对一的关联 7.两实体类代码如下: public class Wage{ //月工资实体类 private Long wid; private String empName; //雇员姓名 private String month; //月份 //Getter & Setter …… } public class WageItem{ //工资项 private Wage wage;

hibernate教程

一、使用Hibernate的3个准备和7个步骤 准备1:导入Hibernate库(jar包); 准备2:添加配置文件-Hibernate.cfg.xml jdbc:microsoft:sqlserver://localhost:1433;Database=zf sa pwd com.microsoft.jdbc.sqlserver.SQLServerDriver #配置数据库链接 org.hibernate.dialect.SQLServerDialect #数据库方言 true #设置运行时是否在控制台显示SQL语句 #映射文件,可以有多个 准备3:添加实体类和映射文件(User.hbm.xml) 类: public class User implements java.io.Serializable { //要实现Serializable private Integer uid; private String uname; private String upass; public User(){// 要有默认构造方法 } // Getter and setter } User.hbm.xml: 列名