CBD 中心 hibernate笔试题及答案
JAVA开发工程师面试笔试题(含答案)_v0.4

Java、J2EE部分(100分)1.hibernate对象有多少种状态?请具体描述每种状态的特点。
(8分)Hibernate的对象有3种状态,分别为:瞬时态(Transient)、持久态(Persistent)、脱管态(Detached).处于持久态的对象也称为PO(PersistenceObject),瞬时对象和脱管对象也称为VO(ValueObject).瞬时态由new命令开辟内存空间的java对象,eg.Person person=new Person("xiaoxiao","女");如果没有变量对该对象进行引用,它将被java虚拟机回收.瞬时对象在内存孤立存在,它是携带信息的载体,不和数据库的数据有任何关联关系,在Hibernate中,可通过session的save()或saveOrUpdate()方法将瞬时对象与数据库相关联,并将数据对应的插入数据库中,此时该瞬时对象转变成持久化对象.持久态处于该状态的对象在数据库中具有对应的记录,并拥有一个持久化标识.如果是用hibernate的delete()方法,对应的持久对象就变成瞬时对象,因数据库中的对应数据已被删除,该对象不再与数据库的记录关联.当一个session执行close()或clear()、evict()之后,持久对象变成脱管对象,此时持久对象会变成脱管对象,此时该对象虽然具有数据库识别值,但它已不在HIbernate持久层的管理之下.持久对象具有如下特点:1.和session实例关联;2.在数据库中有与之关联的记录.脱管态当与某持久对象关联的session被关闭后,该持久对象转变为脱管对象.当脱管对象被重新关联到session上时,并再次转变成持久对象.脱管对象拥有数据库的识别值,可通过update()、saveOrUpdate()等方法,转变成持久对象.脱管对象具有如下特点:1.本质上与瞬时对象相同,在没有任何变量引用它时,JVM会在适当的时候将它回收;2.比瞬时对象多了一个数据库记录标识值.2.hibernate查询对象集合有多少种方法?请列出具体方法名。
hibernet面试笔试题

11. Hibernate介绍Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query 和Configuration。
这5个核心接口在任何开发中都会用到。
通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。
下面对这五个核心接口分别加以介绍。
•Session接口:Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。
)。
但需要注意的是Session对象是非线程安全的。
同时,Hibernate的session不同于JSP应用中的HttpSession。
这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称为用户session。
•SessionFactory接口:SessionFactroy接口负责初始化Hibernate。
它充当数据存储源的代理,并负责创建Session对象。
这里用到了工厂模式。
需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
•Configuration接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory 对象。
hibetnate试题

hibetnate试题1.若数据库是Oracle或者DB2,则以下generator属性值不能使用的是(B)。
A.nativeB.indentityC.hiloD.sequence2.Hibernate增加数据时可以调用session的(AC)方法。
A.saveB.updateC.deleteD.saveOrUpdate3.使用Hibernate技术实现数据库持久化时,一下不在Hibernate 配置文件中的是(D).A.数据库连接信息B.数据库类型(Dialect)C.show_sql参数D.数据库表及实体的映射信息4.Hibernate对JDBC访问数据库的代码进行封装,从而大大简化了数据访问层的重复性代码,是针对三层架构中(B)的解决方案。
A.表现层B.业务逻辑层C.持久化层D.数据库系统5.三层结构是如今最为典型的一种应用软件分层结构,三层分别为(ABD)A.表现层B.业务逻辑层C.持久化层D.数据库系统6.ORM解决的主要问题就是对象-关系的映射,以下关于面向对象概念与面向关系概念的对应关系说法正确的是(AC)A.类对应表B.对象对应表C.属性对应表的列(字段)D.属性对应表表的行(记录)7.关于依赖注入,以下说法正确的是(CD)A.依赖注入是一种设计开发模式B.依赖注入使得组件之间相互依赖,互相制约C.依赖注入提倡使用接口编程D.依赖注入使得可以独立开发各个组件,然后根据组件之间的依赖关系组装8.级联删除时,cascade属性是(AC)。
A.allB.saveC.deleteD.save-update9.cascade的属性值有(ACD)A.allB.saveC.deleteD.save-update10.inverse属性值为(C)是标识主控方。
A.allB.falseC.trueD.none11.从性能考虑,inverse属性值一般设置为(C)A.allC.trueD.none12.使用Hibernate是Teacher,Student类的代码如下:public class Teacher{private int teacherId;private String teacherName;//getter,setter方法……}public class Student{private int StudentId;private String StudentName;private Teacher teacher;//getter,setter方法}在Student.hbm.xml映射文件中,下列配置代码正确的是(D)。
SSH笔试题

SSH笔试题SSH笔试题struts+spring+hibernate面试题集1 Action是不是线程安全的?如果不是有什么方式可以保证Action的线程安全?如果是,说明原因不是声明局部变量,或者扩展Requestprocessor,让每次都创建一个Action,或者在spring中用scope=\"prototype\"来管理2.MVC,分析一下struts是如何实现MVC的m:JavaBean 或结合 EJB 组件或者pojo构成c:Action 来实现v:一组 JSp 文件及其标签构成。
3.struts中的几个关键对象的作用(说说几个关键对象的作用)Action:控制器类,ActionForm:表单对象,DynaValidatorForm:动态form,ActonMapping:配置文件中action节点的信息......4.说说AOp和IOC的概念以及在spring中是如何应用的AOp:面向方面编程,ioc:依赖注入;声明式事务和编程式事务积极一些通用部分5.Hibernate有哪几种查询数据的方式hql查询,sql查询,条件查询6.load()和get()的区别hibernate对于load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,load默认支持延迟加载,在用到对象中的其他属性数据时才查询数据库,但是万一数据库中不存在该记录,只能抛异常ObjectNotFoundEcception;所说的load方法抛异常是指在使用该对象的数据时,数据库中不存在该数据时抛异常,而不是在创建这个对象时。
由于session中的缓存对于hibernate来说是个相当廉价的资源,所以在 load时会先查一下session缓存看看该id对应的对象是否存在,不存在则创建代理(load时候之查询一级缓存,不存在则创建代理)。
get() 现在一级缓存找,没有就去二级缓存找,没有就去数据库找,没有就返回null ;而对于get方法,hibernate一定要获取到真实的数据,否则返回null。
Hibernate+MyBatis内部测试笔试题

ACCP7.0内部测试注意:1、请勿在试卷上留下笔迹2、交卷时试题和答案均要上交《使用Hibernate开发租房系统》内部测试笔试题一、选择题(共25题,每题2.5分,选择一项或多项,漏选错选不得分)1.在Hibernate中,以下关于主键生成器说法错误的是()。
A.increment可以用于类型为long、short或byte的主键B.identity用于如SQL Server、DB2、MySQL等支持标识列的数据库C.sequence用于如Oracle、SQL Server等支持序列的数据库D.native由Hibernate根据底层数据库自行判断采用何种主键生成策略,是由使用的数据库生成主键的值2.在Hibernate中,关于脏检查和刷新缓存说法正确的是()。
A.当事务提交时,会发生脏检查B.Session的flush( )方法是刷新缓存的方法C.在执行Session的commit( )方法之前不会调用Session的flush( )方法D.编写代码时,调用commit( )方法之前要调用flush( )方法3.使用HQL查询所有部门信息,以下正确的是()。
A.from DeptB.select * from cn.jbit.demo.entity.DeptC.select Dept from cn.jbit.demo.entity.Dept dD.select d from Dept d4.关于Query接口的list( )和iterate( )方法,说法正确的是()。
A.执行list( )方法,查询所有符合条件的记录B.执行iterate( )方法,查询所有符合条件的记录C.执行list( )方法,查询出所有符合条件的主键值D.执行iterate ( )方法,查询出所有符合条件的主键值5.在HQL中,关于Query接口绑定参数的方法,说法正确的是()。
2使用Hibernate开发租房系统A.setParameter( )方法用于绑定任意类型的参数B.setParameter( )有重载的方法C.setProperties( )有重载的方法D.setProperties( )方法用于绑定命名参数6.在Hibernate中,关于以下映射配置,说法错误的是()。
Hibernate练习题

Hibernate练习题Hibernate练习题1.一般情况下,关系数据模型与对象模型之间有哪些匹配关系(多选)A)表对应类B)记录对应对象C)表的字段对应类的属性D)表之间的参考关系对应类之间的依赖关系2.试述load()和get()的区别。
1.从返回结果上对比:load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常get方法检索不到的话会返回null2.从检索执行机制上对比: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 对象实例的工厂,它是唯一的。
hibernate面试题及答案
hibernate面试题及答案hibernate面试题及答案求职应聘,面试技巧的预备是必不行少的环节。
快来学习hibernate面试题及答案啦,增加面试通过率,阳光网我带你一起学习。
hibernate面试题及答案(一)一. Hibernate工作使用步骤?1. 读取并解析配置文件2. 读取并解析映射信息,创建SessionFactory3. 打开Sesssion4. 创建事务Transation5. 长期化操作6. 提交事务7. 关闭Session8. 关闭SesstionFactory二.Hibernate的查询方式有几种?(1)导航对象图检索方式。
依据已经加载的对象,导航到其他对象。
(2)OID查询方式。
依据对象的OID来查询对象。
Session的get()和load()方法。
(3)HQL查询方式。
HQL是面对对象的查询语言,session的find()方法用于执行HQL查询语句。
可以利用Query接口。
Query query = session.createQuery("from Customer as c where =: customerName');query.setString("customerName','张三'); List resultList = query.list();(4)QBC查询方式。
这种API封装了基于字符串形式的查询语句。
Criteria criteria = session.createCriteria(User.class); Criterion criterion1 = Expession.like("name','T%');Criterion criterion2 = Expession.eq(age,new Integer(30));criteria = criteria.add(criterion1);criteria = criteria.add(criterion2);List resultList = criteria.list();这种查询方式使用的较少,主要是在查询中需要用户输入一系列的查询条件,假如接受HQL查询代码会比较烦。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CBD 中心hibernate笔试题及答案(1)一般情况下,关系数据模型与对象模型之间有哪些匹配关系(多选)A)表对应类B)记录对应对象C)表的字段对应类的属性D)表之间的参考关系对应类之间的依赖关系(2)以下关于SessionFactory的说法哪些正确?(多选)A)对于每个数据库事务,应该创建一个Sess ionFac tory对象B)一个Sess ionFac tory对象对应一个数据库存储源。
C)SessionFactory是重量级的对象,不应该随意创建。
如果系统中只有一个数据库存储源,只需要创建一个。
D)Sess ionFac tory的load()方法用于加载持久化对象(3)C ustomer类中有一个Set类型的orders属性,用来存放O rder订单对象,在C us tomer.hbm.xml文件中,用哪个元素映射orders属性?A)<s et> B)<one-to-many> C)<many-to-one> D)<property>(4)<set>元素有一个c asc ade属性,如果希望H ibernate级联保存集合中的对象,c as ecade属性应该取什么值?(单选)A)noneB)saveC)deleteD)s ave-update(5)以下哪些属于Session的方法?A)load()B)save()C)delete()D)update()E)open()F)c lose()(6)以下程序的打印结果是什么?(单选)tx = s ession.beginT rans action();Cus tomer c1=(C ustomer)session.load(C ustomer.class,new Long(1));Cus tomer c2=(C ustomer)session.load(C ustomer.class,new Long(1));System.out.println(c1==c2);tx.c ommit();sess ion.close();A)运行出错,抛出异常B)打印fals eC)打印true(7)以下程序代码对C us tomer的name属性修改了两次:tx = s ession.beginT rans action();Cus tomer c us tomer=(Cus tomer)s ession.load(C ustomer.class,new Long(1));c ustomer.setN ame(\"Jack\");c ustomer.setN ame(\"M ike\");tx.c ommit();执行以上程序,H ibernate需要向数据库提交几条update语句?(单选)A)0 B)1C)2D)3(8)在持久化层,对象分为哪些状态?(多选)A)临时状态B)独立状态C)游离状态D)持久化状态(9)对于以下程序,C us tomer对象在第几行变为持久化状态?(单选)Cus tomer c us tomer=new C ustomer(); //line1c ustomer.setN ame(\"T om\"); //line2Session s ession1=sess ionFac tory.openSess ion(); //line3T rans action tx1 = sess ion1.beginT ransac tion(); //line4sess ion1.s ave(c us tomer); //line4tx1.c ommit(); //line5sess ion1.c lose(); //line6A) line1B)line2C)line3 D)line4E)line5 F)line6(10)对于以下程序,C us tomer对象在第几行变为游离状态?(单选)Cus tomer c us tomer=new C ustomer(); //line1c ustomer.setN ame(\"T om\"); //line2Session s ession1=sess ionFac tory.openSess ion(); //line3T rans action tx1 = sess ion1.beginT ransac tion(); //line4sess ion1.s ave(c us tomer); //line4tx1.c ommit(); //line5sess ion1.c lose(); //line6A) line1B)line2C)line3 D)line4E)line5 F)line6(11)以下哪一种检索策略利用了外连结查询?(单选)A)立即检索 B)延迟检索 C)迫切左外连结检索(12)假设对C us tomer类的orders集合采用延迟检索策略,编译或运行以下程序,会出现什么情况(单选)Session s ession=sess ionFac tory.openSess ion();tx = s ession.beginT rans action();Cus tomer c us tomer=(Cus tomer)s ession.get(C us tomer.c lass,new Long(1));tx.c ommit();sess ion.close();I terator orderI terator=c ustomer.getO rders().iterator();A)编译出错 B)编译通过,并正常运行 C)编译通过,但运行时抛出异常(13)关于HQL与SQL,以下哪些说法正确?(多选)A)HQL与SQL没什么差别B)HQL面向对象,而SQL操纵关系数据库C)在HQL与SQL中,都包含s elect,ins ert,update,delete语句D)HQL仅用于查询数据,不支持ins ert,update和delete语句(14)事务隔离级别是由谁实现的?(单选)A)Java应用程序 B)H ibernate C)数据库系统 D)JDBC驱动程序(15)悲观锁与乐观锁,哪个具有较好的并发性能?(单选)A)悲观锁 B)乐观锁答案:(1)A,B,C (2)B,C (3)A (4)D (5)A,B,C,D,F (6)C (7)B (8)A,C,D (9)D (10)F (11)C (12)C (13)B,D (14)C (15)B二、简答题:15、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? 接口可以继承接口。
抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
37、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?都不能38、数组有没有length()这个方法? String有没有length()这个方法?数组没有length()这个方法,有length的属性。
String有有length()这个方法。
35、List, Set, Map是否继承自Collection接口?List,Set是,Map不是39、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。
equals()是判读两个Set是否相等。
equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。
40、构造器Constructor是否可被override?构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。
41、是否可以继承String类?String类是final类故不可以继承。
112、列举一些常用的类、包、接口,请各举5个常用的类:BufferedReader BufferedWriter FileReader FileWirter String Integer常用的包:ng java.awt java.io java.util java.sql常用的接口:Remote List Map Document NodeList109、List、Map、Set三个接口,存取元素时,各有什么特点?List 以特定次序来持有元素,可有重复元素。
Set 无法拥有重复元素,内部排序。
Map 保存key-value值,value 可多值。
96、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?Java 通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。
在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。
当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。
Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。
一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理。
用try来指定一块预防所有"异常"的程序。
紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的"异常"的类型。
throw语句用来明确地抛出一个"异常"。
throws用来标明一个成员函数可能抛出的各种"异常"。
Finally为确保一段代码不管发生什么"异常"都被执行一段代码。
可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。
每当遇到一个try语句,"异常"的框架就放到堆栈上面,直到所有的try语句都完成。
如果下一级的try语句没有对某种"异常"进行处理,堆栈就会展开,直到遇到有处理这种"异常"的try语句。
70、XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?a: 两种形式 dtd schema,b: 本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema 的根本目的),c:有DOM,SAX,STAX等DOM:处理大型文件时其性能下降的非常厉害。