1、-装-订-线-*学院课程考试试卷课程名称:Hibernate:使用 Hibernate;C. class=“com.scce.pojo.Order“应为 type=“com.scce.pojo.Order“; D. column 属性不可再节点内设置执行下面的 hql 查询,关于返回值的说法,正确的是 ( )。select username,userid from Usequery.list():list Listselect u.username,u.userid from com.scce.pojo.User u where u is not nullA. 语法错误,不能执行B. 返回一个
2、类型为 List 的实例C. 返回一个数组D. 当返回结果只有一条时,返回一个数组7. 一般情况下,关系数据模型与对象模型之间有哪些匹配关系( ACD )。选三项A. 表对应类B. 记录对应类/对象C. 表的字段对应类的属性;D. 表之间的参考关系对应类之间的依赖关系;8. 以下关于 SessionFactory 的说法,正确的是( )。选两项A. 对于每个数据库事务,应该创建一个 SessionFactory 对象B. 一个 SessionFactory 对象对应一个数据库存储源;-装-订-线-C. SessionFactory 是重量级的对象,不应该随意创建。如果系统中只有一个数据库存储源
3、,只需要创建一个;D. SessionFactory 的 load()方法用于加载持久化对象9. Customer 类中有一个 Set 类型的 orders 属性,用来存放 Order 订单对象,在 Customer.hbm.xmlCustomer.hbm.xml文件中,用哪个元素映射 orders 属性( )。选两项A. ;B. ;C. D. 10. 元素有一个 cascade 属性,如果希望 Hibernate 级联保存集合中的对象,casecade 属性应该取什么值( )。A. noneB. saveC. deleteD. save-update;11. 以下哪些属于 Session 的
4、方法( )。选三项A. load();/delete() get() close() isOpen()B. save()C. open()D. saveOrUpdate();12. 以下程序的打印结果是( )。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);mit();
5、session.close();A. 运行出错,抛出异常B. 打印 falseC. 打印 true;-装-订-线-D. 编译出错13. tx = session.beginTransaction();Customer customer=(Customer)session.load(Customer.class,new Long(1);customer.setName(“Jack“);customer.setName(“Mike“);mit();执行以上程序,Hibernate 需要向数据库提交几条 update 语句( )。A. 0B. 1;C. 2D. 314. 在持久化层,对象分为哪些状态
6、( )。选三项A. 瞬时(Transient)(临时)B. 新建(New)C. 游离(Detached)(脱管)D. 持久(Persistent)15. 对于以下程序,Customer 对象在第几行变为持久化状态( )。Customer customer=new Customer(); customer.setName(“Tom“); Session session1=sessionFactory.openSession(); Transaction tx1 = session1.beginTransaction(); /line1session1.save(customer); /line2
7、 它是动词,过程mit(); /line3(持久化 等价于 保存到硬盘)session1.close(); /line4A. line1B. line2;C. line3D. line416. 对于以下程序,Customer 对象在第几行变为游离状态( )。Customer customer=new Customer(); -装-订-线-customer.setName(“Tom“); Session session1=sessionFactory.openSession(); Transaction tx1 = session1.beginTransaction(); /line1sessi
8、on1.save(customer); /mit(); /line3session1.close(); /line4A. line1B. line2C. line3D. line4;17. 以下哪一种检索策略利用了外连结查询( )。A. 立即检索 B. 延迟检索 C. 迫切左外连结检索;D. 迫切右外连结检索18. 假设对 Customer 类的 orders 集合采用延迟检索策略,编译或运行以下程序,会出现( )。Session session=sessionFactory.openSession();tx = session.beginTransaction();Customer cust
9、omer=(Customer)session.get(Customer.class,new Long(1);mit();session.close(); Iterator orderIterator=customer.getOrders().iterator();A. 编译出错 B. 编译通过,正常运行,不显示任何信息C. 编译通过,正常运行,并显示出结果D. 编译通过,但运行时抛出异常;19. POJO 是( )。A. Plain Old Java Object;B. Programming Object Java ObjectC. Page Old Java ObjectD. Plain
10、Object Java Old20. POJO 的作用是( )。选两项A. 普通的 Java 对象映射数据库字段;-装-订-线-B. 数据访问C. 对象的赋值;D. 保存客户端对象21. 实现 equals 和 hashCode 最显而易见的作用是( )。A. 比较两个对象标识符的值;B. 比较数据库的两条数据C. 比较两个组建是否部署在同一个应用服务器上D. 对象与字段的映射22. 在源代码中嵌入映射信息需要( )。A. XDoclet;B. EJBC. HibernateD. Spring23. 所有的 Hibernate 内建对象中,除了( )都支持空(null)语义。A. Collec
11、tion;不支持 nullB. ElementC. EntityD. NodeList24. ( )元素把子对象的一些元素与父类对应的表的一些字段映射起来。A. Component(组件)B. ElementC. AttributeD. ActionForm25. ORM 是( )。A. 对象关系映射B. 对象实体映射C. 数据传输对象D. 数据访问对象26. JDBC 可以做的三件事是( )。选三项A. 与数据库建立连接B. 通过 JDBC-API 向数据库发送 SQL 语句C. 通过 JDBC-API 执行 SQL 语句D. 进行实体关系的映射27. ORM 的好处有( )。-装-订-线-
12、A. 能进行关系对象的映射B. 具有控制器功能C. 能在服务器端保存客户端状态D. 向 DTO 一项能传递数据28. 常见的实体域对象是( )。选两项A. 主动域对象(EJB)B. JavaBean 对象(也称为 POJO,Plain Old Java Object)C. 控制器对象D. ActionForm29. 常见的三层分别是( )。选三项A. 应用层B. 业务逻辑层C. 数据访问层D. 通讯层30. 对象(实体的实例)对一个特定的 Session 来说,要么是一个_对象,要么是_对象( )。选两项A. 瞬时B. 持久化C. 控制器D. 数据传输对象31. 如果你已知某个实例的持久化标识
13、,你可以使用 Session 的( )方法来获取它。A. load()B. loadAll()C. getAllData()D. init()32. 如果你不能确定你要寻找的对象的持久化标识符,那么你需要使用查询,使用 Session 的_方法( )。A. createQuery()B. query()C. queryAll()D. queryObject()33. HQL 不支持聚合函数有( )。HQL 中聚合函数,不能使用?占位,用*或类具体字段名-装-订-线-A. count(*)B. avg()/代表字段名C. count()D. count(?)34. _和_子句都不支持算数表达式(
14、 )。选两项A. group by;B. order by;C. compute byD. insert by35. 除了_和_外,查询语句都是对大小写不敏感的( )。选两项A. Java 类;B. POJO 类;C. 映射文件D. 属性名称36. from Cat as cat,不仅仅返回_的实例,而且还返回_的实例( )。选两项A. Cat;B. Cat 父类C. Cat 子类;D. Cat 实现接口37. _代表升序,_代表降序( )。选两项A. ascB. ansiC. descD. description38. 对原生 SQL 查询的控制是通过( )接口进行的。A. SQLQuery
15、;B. SessionC. ListD. Query39. 假设实体映射时有一个( )的关联指向另外一个实体,在查询时必须也返回那个实体,否则会导致发生一个”column not found”的数据库错误。A. many-to-one-装-订-线-B. many-to-manyC. one-to-manyD. one-to-one;40. 在 Hibernate 中,关于数据库的方言,下面说法正确的是( )。A. 可以不写数据库方言B. 数据库方言没有作用,可以随便写C. 有通用的数据库方言可以使用D. 数据方言对应于每个数据库,主要用于产生 SQL 语句;41. 下面不属于持久化的是( )。
16、A. 把对象转换称字符串的形式通过网络传输,在另一端接收到这个字符串后能把对象还原出来;B. 把程序数据从数据库中读出来C. 从 XML 配置文件中读取程序的配置信息D. 把程序数据保存为文件42. 下面不是 Hibernate 映射文件中包含的内容是( ) 。选两项A. 数据库连接信息;B. Hibernate 属性参数;C. 主键生成策略D. 属性数据类型43. 下面的程序执行后没有报错,但数据总保存不到数据库,最可能的原因是( ) 。public static void imain(String args)SessionFactory sf=new Configration().conf
17、igure().buildSessionFactory();Session session=sf.openSession();Medal medal=new Medal();medal.setOwner(“totong”);medal.setType(“Gold medal”);session.save(user);session.close();A. 配置文件配置有误B. 没有在配置文件中包含对映射文件的声明C. 配置文件配置有误-装-订-线-D. 没有对持久化操作捕捉异常E. 没有开启事务;44. 下列属于多对一关系的是( ) 。A. 书和作者B. 手机和生产厂家C. 用户和发布的出租信息
18、D. 士兵和班长;45. 已知 wage.getItem().size()的值是 1。要想使执行 session.update(wage)时自动执行 session.update(wage.getItems().get(0),必须配置( ) 。A. B. C. D. ;46. 已知系统中的 tbl_user 表对应的实体类是 User,下列 HQL 语句中正确的是( ) 。选两项A. from User;B. select * from tbluserC. select User from UserD. from User u where u.uname=”15”;47. 在 JAVA 中,关
19、于属性文件,下列选项中的说法正确的是( ) 。A属性文件以名称和值的形式保存信息;B属性文件不能写中文C属性文件中能保存各种数据类型的信息D 属性文件的文件扩展名是.xml48. 下面说法正确的是( ) 。选两项AHQL 只用于查询数据BHQL 具备更强大的功能,实体的更新与删除即其主要特征之一;Cdelete 与 update 子句为 Hibernate2 引入的新特性D delete 与 update 子句为 Hibernate3 引入的新特性;49. VO 与 PO 的主要区别在于( ) 。选三项AVO 是相对独立的实体对象,处于非管理状态;-装-订-线-BPO 是由 Hibernate
20、 纳入容器管理的对象,代表与数据库某条记录对应的实体C如果一个 PO 与其对应的 Session 实例分离,那么它将由 PO 变成VOD处于 Model 层的 PO 能被传到其他层HQL 语法结构(update/delete 子句为 Hibernate3 引入的新特性)select/update/deletefrom.where.group by.having.order by.Component 是一个被包含的对象,它作为值类型被持久化,而非一个被引用的实体。“component(组件)”这一术语指的是面向对象的合成概念(而并不是系统构架层次上的组件的概念)举个例子, 你可以对人(Perso
21、n)如以下这样来建模: public class Person private java.util.Date birthday;private Name name;private String key;public String getKey() return key;private void setKey(String key) this.key=key;public java.util.Date getBirthday() return birthday;-装-订-线-public void setBirthday(java.util.Date birthday) this.birthda
22、y = birthday;public Name getName() return name;public void setName(Name name) this.name = name;public class Name char initial;String first;String last;public String getFirst() return first;void setFirst(String first) this.first = first;public String getLast() return last;void setLast(String last) th
23、is.last = last;public char getInitial() return initial;void setInitial(char initial) this.initial = initial;现在,姓名(Name)是作为人(Person) 的一个组成部分。需要注意的是 :需要对姓名 的持久化属性定义 getter 和 setter 方法,但是不需要实现任何的接口或申明标识符字段。 以下是这个例子的 Hibernate 映射文件: -装-订-线-人员(Person)表中将包括 pid, birthday, initial, first 和 last 等字段。 就像所有的值
24、类型一样, Component 不支持共享引用。 换句话说,两个人可能重名,但是两个 person 对象应该包含两个独立的 name 对象,只不过是具有“同样”的值。 Component 的值为空从语义学上来讲是 专有的 (ad hoc)。 每当 重新加载一个包含组件的对象,如果component 的所有字段为空,那么将 Hibernate 将假定整个component 为 空。对于绝大多数目的,这样假定是没有问题的。 Component 的属性可以是 Hibernate 类型(包括 Collections, many-to-one 关联, 以及其它 Component 等等)。嵌套 Component 不应该作为特殊的应用被考虑(Nested components should not be considered an exotic usage)。 Hibernate 趋向于支持设计细致(fine-grained)的对象模型。 元素还允许有 子元素 ,用来表明component 类中的一个属性返回包含它的实体的引用。 -装-订-线-