Hibernate复习试题1含答案_第1页
Hibernate复习试题1含答案_第2页
Hibernate复习试题1含答案_第3页
Hibernate复习试题1含答案_第4页
Hibernate复习试题1含答案_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

...wd......wd......wd...美斯坦福在线考试系统荆州理工G3Hibernate科目:SCCEG3Hibernate总分:100分时间:60分钟一、单项选择题(共45题,每题2分,说明:选择一项正确的答案)1、下面关于Hibernate的说法,错误的选项是〔〕A、Hibernate是一个“对象-关系映射〞的实现B、Hibernate是一种数据持久化技术C、Hibernate是JDBC的替代技术他是对JDBC做了轻量级的对象封装D、使用Hibernate可以简化持久化层的编码参考答案:C2、在使用了Hibernate的系统中,要想在删除某个客户数据的同时删除该客户对应的所有订单数据,下面方法可行的是〔〕A、配置客户和订单关联的cascade属性为save-updateB、配置客户和订单关联的cascade属性为allC、设置多对一关联的inverse属性为trueD、设置多对一关联的inverse属性为false参考答案:B详解3、下面一对多关联的配置中,存在哪些错误〔〕<setname="orders"inverse="false"cascade="true"><one-to-manyclass="com.x.entity.Order"column="customer_id"/></set>A、inverse属性不可以设置为falseB、cascade属性不可设置为trueC、class="com.x.entity.Order"应为type="com.x.entity.Order"D、column属性不可再<one-to-many>节点内设置参考答案:B4、下面创立Criteria对象的语句中正确的选项是〔〕A、Criteriac=query.createCriteria();B、Criteriac=query.addCriteria();C、Criteriac=session.createCriteria();D、Criteriac=session.createCriteria(User.class);参考答案:D5、下面关于Hibernate映射文件配置中dynamic-update属性说法正确的选项是〔〕\o"生生死死"详解A、动态的修改,如果为true,只改变有改变的属性B、动态的修改,如果为true,只改变没有改变过的属性C、动态的修改,如果为true,改变所有的属性D、以上说法都错参考答案:A6、下面关系Hibernate对象的状态说话正确的选项是〔〕临时持久化游离A、Hibernat的对象只有一种状态B、Hibernat的对象有2种状态C、Hibernat的对象有3种状态D、Hibernat的对象有4种状态参考答案:C7、Hibernate对象从瞬时到持久状态转换的方式有〔〕。A、调用session的save方法saveorupdatB、调用session的create方法C、调用session的update方法D、调用session的load方法参考答案:A8、J2EE中往往使用____封装业务实体,____封装业务逻辑,____调用〔〕A、实体Bean、会话Bean、实体Bean、会话BeanB、实体Bean、会话Bean、会话Bean、实体BeanC、会话Bean、实体Bean、实体Bean、会话BeanD、会话Bean、实体Bean、会话Bean、实体Bean参考答案:B9、EJB分为〔〕三种类型A、会话bean、实体bean、WebserviceB、会话bean、实体bean、消息驱动beanC、Jsp、servlet、jsfD、实现类、Home接口类、Object接口类参考答案:B10、有状态SessionBean和无状态SessionBean的区别说法正确的选项是〔〕详解A、无状态SessionBean要保存客户端的状态,同客户端是一对一B、有状态SessionBean要保存客户端的状态,同客户端是一对一C、他们都要保存客户端的状态,同客户端是一对一D、以上说法都不对参考答案:B11、有以下代码段,下面说法正确的选项是〔〕p65StringqlString="selectmodelfromStudentasmodelwheremodel.createDate=?1";(1)Queryquery=em.createQuery(qlString);(2)query.setParameter(0,"2000-12-05");(3)Listlist=q.list();(4)A、第一行有错,必须为参数起个名字B、第三行有错误,query.setParameter(0,"2000-12-05")应为query.setParameter(1,"2000-12-05");C、第四行没有错误D、这些语句没有错误参考答案:B12、在EJB3.0中用来保存一个对象的方法是〔〕A、saveB、updateC、persistD、create参考答案:C13、在J2EE中,Servlet和JSP组件必须在〔〕容器中才能运行A、AppletB、客户端C、WebD、EJB参考答案:C14、在J2EE中,EJB组件必须在〔〕容器中才能运行A、AppletB、客户端C、WebD、EJB参考答案:D15、在三层构造中,数据访问层承当的责任是〔〕A、定义实体类B、数据的增删改查操作C、业务逻辑的描述D、页面展示和控制转发参考答案:B16、<set>元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade属性应该取〔〕值A、noneB、saveC、deleteD、save-update参考答案:D17、以下程序的打印结果是〔〕tx=session.beginTransaction();Customerc1=(Customer)session.load(Customer.class,newLong(1));Customerc2=(Customer)session.load(Customer.class,newLong(1));System.out.println(c1==c2);txmit();session.close();A、运行出错,抛出异常B、打印falseC、打印trueD、编译出错参考答案:C18、以下程序代码对Customer的name属性修改了两次:tx=session.beginTransaction();Customercustomer=(Customer)session.load(Customer.class,newLong(1));customer.setName("Jack\");customer.setName("Mike\");txmit();执行以上程序,Hibernate需要向数据库提交〔〕条update语句A、0B、1C、2D、3参考答案:B19、对于以下程序,Customer对象在第〔〕行变为游离状态closeclearevictP82Customercustomer=newCustomer();customer.setName(\"Tom\");Sessionsession1=sessionFactory.openSession();Transactiontx1=session1.beginTransaction();//line1session1.save(customer);//line2tx1mit();//line3session1.close();//line4A、line1B、line2C、line3D、line4参考答案:D20、以下检索策略中,〔〕利用了外连结查询详解20A、立即检索B、延迟检索C、迫切左外连结检索D、迫切右外连结检索参考答案:C21、假设对Customer类的orders集合采用延迟检索策略,编译或运行以下程序,会出现〔〕Sessionsession=sessionFactory.openSession();tx=session.beginTransaction();Customercustomer=(Customer)session.get(Customer.class,newLong(1));txmit();session.close();IteratororderIterator=customer.getOrders().iterator();A、编译出错B、编译通过,正常运行,不显示任何信息C、编译通过,正常运行,并显示出结果D、编译通过,但运行时抛出异常参考答案:D22、在源代码中嵌入映射信息需要〔〕A、AnnoationB、hbm.xmlC、struts.xmlD、web.xml参考答案:A23、ORM的好处包括〔〕A、能进展关系对象的映射B、具有控制器功能C、能在服务器端保存客户端状态D、向DTO一项能传递数据参考答案:A24、某个实例的持久化标识,可以使用Session的〔〕方法来获取它A、load()B、loadAll()C、getAllData()D、init()参考答案:A25、如果不确定所寻找对象的持久化标识符,那么需要使用查询,使用Session的〔〕方法A、createQuery()B、query()C、queryAll()D、queryObject()参考答案:A26、使用Session的〔〕,会把对象的状态从数据库中移除A、delete()B、remove()C、clear()D、removeAll()参考答案:A27、对原生SQL查询的控制是通过〔〕接口进展的A、SQLQueryB、SessionC、ListD、Query参考答案:A28、可以把结果集映射的信息放在外部的〔〕元素中,这样就可以在多个命名查询间或者通过setResultSetMapping()API来访问A、<resultset>B、<result>C、<mapping>D、<description>参考答案:A29、使用Hibernate的QBC查询,要使用SQL中的类似selectcount(*)fromtablename方法求出记录数,必须使用〔〕类A、RestrictionsB、ProjectionsC、CriteriaD、Criteron参考答案:B30、在Hibernate中,关于数据库的方言,下面说法正确的选项是〔〕A、可以不写数据库方言B、数据库方言没有作用,可以随便写C、有通用的数据库方言可以使用D、数据方言对应于每个数据库,主要用于产生SQL语句参考答案:D31、下面不属于持久化的是〔〕A、把对象转换称字符串的形式通过网络传输,在另一端接收到这个字符串后能把对象复原出来B、把程序数据从数据库中读出来C、从XML配置文件中读取程序的配置信息D、把程序数据保存为文件参考答案:A32、下面的程序执行后没有报错,但数据总保存不到数据库,最可能的原因是〔〕publicstaticvoidimain(String[]args){SessionFactorysf=newConfigration().configure().buildSessionFactory();Sessionsession=sf.openSession();Medalmedal=newMedal();medal.setOwner(“totong〞);medal.setType(“Goldmedal〞);session.save(user);session.close();}A、配置文件配置有误B、没有在配置文件中包含对映射文件的声明C、配置文件配置有误D、没有对持久化操作捕捉异常E、没有开启事务参考答案:E33、wage.getItem().size()的值是1。要想使执行session.update(wage)时自动执行session.update(wage.getItems().get(0)),必须配置〔〕A、<setname=〞items〞inverse=〞true〞cascade=〞none〞>…</set>B、<setname=〞items〞inverse=〞false〞cascade=〞none〞>…</set>C、<setname=〞items〞inverse=〞true〞cascade=〞all〞>…</set>D、<setname=〞items〞inverse=〞false〞cascade=〞save-update〞>…</set>参考答案:D34、在Hibernate关系映射配置中,inverse属性的含义是〔〕。A、定义在<one-to-many>节点上,声明要负责关联的维护B、声明在<set>节点上,声明要对方负责关联的维护C、定义在<one-to-many>节点上,声明对方要负责关联的维护D、声明在<set>节点上,声明要负责关联的维护参考答案:B35、执行下面的hql查询,关于返回值的说法,正确的选项是〔〕selectu.username,u.useridfromcom.scce.pojo.UseruwhereuisnotnullA、语法错误,不能执行B、返回一个类型为List的实例C、返回一个数组D、当返回结果只有一条时,返回一个数组参考答案:B36、以下哪一种检索策略利用了外连结查询〔〕A、立即检索B、延迟检索C、迫切左外连结检索D、迫切右外连结检索参考答案:C37、POJO是〔〕A、PlainOldJavaObjectB、ProgrammingObjectJavaObjectC、PageOldJavaObjectD、PlainObjectJavaOld参考答案:A38、实现equals和hashCode最显而易见的作用是〔〕详解38A、对比两个对象标识符的值B、对比数据库的两条数据C、对比两个组建是否部署在同一个应用服务器上D、对象与字段的映射参考答案:A39、在源代码中嵌入映射信息需要〔〕A、XDocletB、EJBC、HibernateD、Spring参考答案:A40、所有的Hibernate,除了〔〕都支持空(null)语义A、CollectionB、ElementC、EntityD、NodeList参考答案:A41、〔〕元素把子对象的一些元素与父类对应的表的一些字段映射起来A、ComponentB、ElementC、AttributeD、ActionForm参考答案:A42、HQL不支持聚合函数有〔〕A、count(*)B、avg(…)C、count(…)D、count(?)参考答案:D43、假设实体映射时有一个〔〕的关联指向另外一个实体,在查询时必须也返回那个实体,否那么会导致发生一个〞columnnotfound〞的数据库错误A、many-to-oneB、many-to-manyC、one-to-manyD、one-to-one参考答案:D44、在Hibernate中,关于数据库的方言,下面说法正确的选项是〔〕A、可以不写数据库方言B、数据库方言没有作用,可以随便写C、有通用的数据库方言可以使用D、数据方言对应于每个数据库,主要用于产生SQL语句参考答案:D45、以下属于多对一关系的是〔〕A、书和作者B、手机和生产厂家C、用户和发布的出租信息D、士兵和班长参考答案:D二、多项选择题(共5题,每题2分),说明:选择多项正确的答案)1、从持久化状态到临时状态转换的方法有〔〕[选三项]A、evict()B、clear()C、close()D、lock()参考答案:ABC2、有如下代码DeptdeptOne=newDept();deptOne.setDeptName("后勤部");deptOne.setCreateDate("2001-03-02");session.save(deptOne);IntegerdeptId=deptOne.getDeptId();deptOne=null;下面说明正确的有〔〕[选两项]A、deptOne处于生命周期B、deptOne生命周期完毕C、deptOne处于持久化状态D、deptOne处于游离状态参考答案:AC3、Hibernate缓存主要从哪些方面发生作用〔〕[选两项]见书P84A、通过主键值加载数据B、查询数据C、立即加载D、延迟加载参考答案:AD4、什么是Hibernate一级缓存〔〕[选两项]A、Hibernate一级缓存是Session的缓存B、Hibernate一级缓存是SessionFactory的缓存C、第一级缓存为必需,不允许且事实上也无法被卸除D、第一级缓存可以设置参考答案:AC5、不适合放入Hibernate二级缓存的有〔〕[选三项]A、常被修改的数据B、绝不容许出现并发的数据,例如财务数据C、与其他应用共享的数据D、常用数据参考答案:ABC详解5Hibernate中dynamic-insert和dynamic-update设置属性默认值Hibernate允许我们在映射文件里控制insert和update语句的内容.比方在映射文件中<property元素中的update属性设置成为false,那么这个字段,将不被包括在基本的update语句中,修改的时候,将不包括这个字段了.insert同理.dynamic动态SQL语句的配置也是很常用的.下面介绍配置SQL语句的具体属性:

1)<property>元素insert属性:设置为false,在insert语句中不包含这个字段,表示永远不会被插入,默认true

2)<property>元素update属性:设置为false,在update语句中不包含这个字段,表示永远不会被修改,默认true

3)<class>元素mutable属性:设置为false就是把所有的<property>元素的update属性设置为了false,说明这个对象不会被更新,默认true

4)<property>元素dynamic-insert属性:设置为true,表示insert对象的时候,生成动态的insert语句,如果这个字段的值是null就不会参加到insert语句当中.默认false

5)<property>元素dynamic-update属性,设置为true,表示update对象的时候,生成动态的update语句,如果这个字段的值是null就不会被参加到update语句中,默认false

6)<class>元素dynamic-insert属性:设置为true,表示把所有的<property>元素的dynamic-insert属性设置为true,默认false

7)<class>元素dynamic-update属性:设置为true,表示把所有的<property>元素的dynamic-update属性设置为true,默认falseHibernate生成动态SQL语句的消耗的系统资源(比方CPU,内存等)是很小的,所以不会影响到系统的性能,如果表中包含N多字段,建议把dynamic-update属性和insert属性设置为true,这样在插入和修改数据的时候,语句中只包括要插入或者修改的字段.可以节省SQL语句的执行时间,提高程序的运行效率.详解10现实中,很多朋友对两种sessionbean存在误解,认为有状态是实例一直存在,保存每次调用后的状态,并对下一次调用起作用,而认为无状态是每次调用实例化一次,不保存用户信息。仔细分析并用实践检验后,你会发现,事实恰好相反:有状态和无状态会话bean的本质区别是它们的生命期。首先解释一个下面要用到的概念--用户:sessionbean的用户实际上就是直接调用ejb的类的实例,甚至是这个实例的某个方法。同一个类的不同实例对于sessionbean来说是不同的用户。有状态会话bean:每个用户有自己特有的一个实例,在用户的存在期内,bean保持了用户的信息,即“有状态〞;一旦用户灭亡〔调用完毕或实例完毕〕,bean的生命期也告完毕。即每个用户最初都会得到一个初始的bean。无状态会话bean:bean一旦实例化就被加进会话池中,各个用户都可以共用。即使用户已经消亡,bean的生命期也不一定完毕,它可能依然存在于会话池中,供其他用户调用。由于没有特定的用户,那么也就不能保持某一用户的状态,所以叫无状态bean。但无状态会话bean并非没有状态,如果它有自己的属性〔变量〕,那么这些变量就会受到所有调用它的用户的影响,这是在实际应用中必须注意的。详解20Hibernate提供了3种检索策略:l延迟检索;l立即检索;l迫切左外连接;Hibernate提供2种方式来确定检索策略,一中是在配置文件当中,另外一种是在程序种设置。当然,如果你在程序中设置了检索策略,那么你在配置文件中的设置也就无效了。另外的一种情况是HQL会忽略配置文件的设置,而总是采用迫切左外连接。详解38原因是由于在Hibernate中,需要保证持久化标识〔数据库的行〕和仅在特定会话范围内的Java标识是等值的。我们必然希望Set有明确的语义,以防止混合了来自不同会话中获取的实例,从而确保数据的持久化不会发生错误。假设使用过Set,你会知道Set中是不允许存储重复值的,这也是为什么Hibernate推荐在多表关联的映射中采用Set作为存储实体对象的主要原因。详解31.明确inverse和cascade的作用inverse决定是否把对对象中集合的改动反映到数据库中,所以inverse只对集合起作用,也就是只对one-to-many或many-to-many有效〔因为只有这两种关联关系包含集合,而one-to-one和many-to-one只含有关系对方的一个引用〕。cascade决定是否把对对象的改动反映到数据库中,所以cascade对所有的关联关系都起作用〔因为关联关系就是指对象之间的关联关系〕。2.inverse属性:inverse所描述的是对象之间关联关系的维护方式。inverse只存在于集合标记的元素中。Hibernate提供的集合元素包括<set/><map/><list/><array/><bag/>Inverse属

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论