HIBERNATE面试常见问题

2023-08-11   


1.Hibernate的检索方式

①导航对象图检索 OID检索 HQL检索 QBC检索 ⑤本地SQL检索

2. Forward与Global-Forward的区别

答:Forward是根据Action return的值找到对应的JSp页。当多个Action共同return同一个值时,可将这个Forward元素写在Global-Forward中。

3、在Hibernate应用中Java对象的状态有哪些?

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

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

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

4、三种检索策略是什么,分别适用于哪种场合?

立即检索--

优点:对应用程序完全透明,缺点:select语句数目多。适用:类级别。

延迟检索--

优点: 由应用程序决定加载哪些对象,可以避免执行多余的select语句以及避免加载不需要访问的对象,节省内存空间,提高检索效率。

缺点: 应用程序如果要访问游离态的代理类实例,必须保证它在持久化时已经被初始化。

适用: 一对多或多对多关联。应用程序不需要立即访问或者根本不会访问的对象。

迫切左外连接检索:

优点:对应用程序完全透明,不管对象处于持久化状态还是游离状态,应用程序都可以方便的从一个对象导航到另一个与它相关联的对象。使用了外连接,select语句数目少。

缺点:可能会加载程序不许要访问的对象。复杂的数据库表连接形象检索性能。

适用:一对一或多对一关联。应用程序需要立即访问的对象。数据库系统具有良好的表连接性能。

5、ORM解决的不匹配问题(域模型与关系模型之间存在的不匹配)

域模型是面向对象的,关系模型是面向关系的\\\'。

域模型中有继承关系,关系模型中不能直接表示继承关系。

域模型中有多对多关联关系,关系模型中通过连接表来表示多对多关联关系。

域模型中有双向关联关系,关系模型中只有单向参照关系,而且总是many参照one方。

域模型提倡精粒度模型,关系模型提倡粗粒度模型。

6、映射继承关系的三种方式?

1)继承关系树的每个具体类对应一张表:在具体类对应的表中,不仅包含和具体类属性对应的字段,还包括与具体类的父类属性对应的字段。

2)继承关系树的根类对应一张表:在根类对应的表中,不仅包括根类属性对应的字段,

还包括根类的所有子类属性对应的字段。

3)继承关系树中的每个类对应一张表,每个表中只包括和这个类本身属性对应的字段,子类的表参照父类对应的表。

7、Session的find()方法以及Query接口的区别。

答案Session类的find()方法以及Query接口都支持HQL检索方式。这两者的区别在于,前者只是执行一些简单HQL查询语句的便捷方法,它不具有动态绑定参数的功能,而且在Hibernate3.x版本中,已经淘汰了find()方法;而Query接口才是真正的HQL查询接口,它提供了以上列出的各种查询功能。

8.hibernate的配置文件(hibernate.properties)中 hibernate.show_sql=true/flase

在开发阶和测试段应设置为()在发布阶段应设置为();true\\\\\\\\false

9.映射一对多双向关联关系中设置SET元素:



相关内容:

  1. Struts,Spring,Hibernate面试题总结
  2. Struts,Spring,Hibernate面试题总结
  3. Struts&Spring&Hibernate面试总结
  4. Struts&Spring&Hibernate面试总结
  5. 群胜软件Java笔试题
  6. Hibernate持久层技术