1. 请解释Hibernate3.2主键的生成方式中,native和identity方式的区别。
Native主键生成方式会根据不同的底层数据库自动选择Identity、Sequence、Hilo主键生成方式
特点:根据不同的底层数据库采用不同的主键生成方式。由于Hibernate会根据底层数据库采用不同的映射方式,因此便于程序移植,项目中如果用到多个数据库时,可以使用这种方式。
Identity当时根据底层数据库,来支持自动增长,不同的数据库用不同的主键增长方式。
特点:与底层数据库有关,要求数据库支持Identity,如MySQl中是auto_increment, SQL Server 中是Identity,支持的数据库有MySql、SQL Server、DB2、Sybase和HypersonicSQL。 Identity无需Hibernate和用户的干涉,使用较为方便,但不便于在不同的数据库之间移植程序。
2. 请解释为什么SessionFactory一般以单利方式使用。
SessionFactory是一个大型对象,而且线程安全。在一个程序中只需要一个
3. 请解释说明hibernate配置文件中dialect属性的确切含义。
数据库方言:多种数据库拥有不同的语言语法,通过设置dialect指定所用的数据库,并生成对应语法和语言的sql语句。
4. 请解释说明Hibernate控制下的POJO会呈现三种状态,分别是transient、persistenet和detached,请解释这三种状态。
Trabsient:暂态:数据库中没数据。跟session不相关。没存过。
Persistenet:游离态:在数据库中有记录,但是在session中没有。需要手工同步。
Detached:持久态:数据库中有记录,session中也有这记录。自动更新
5. 请解释Session的load方法和get方法的不同;以及Query的list和iterator方法的不同。
load():现在session缓存中寻找,如果找到了返回该对象,如果没找到,程序
会新建一个对象,并且返回,存在session中,不会在数据库中查找,在程序中如果没有用到这个实体类,可以节省一次数据库连接。如果在程序中用到了这个实体类,这个实体类就会在数据库去查找,如果没有查找到就会抛异常。
(延时加载)
get():在缓存在查找,如果找到该对象,返回该对象。如果没找到,会到数据库
中查找,如果数据库中有则返回该对象,如果没找到这返回空。(立即加载)
6. Hibernate映射文件如下:
<class name=”Emp” table=”t_emp”>
<id name=”id” type=”integer”>………….</id>
<many-to-one name=”dept” class=”Dept” cascade=”save-update” column=”dept_id”
Foreign-key=”fk_emp_dept”/>……</class>
写出hql语句用join fetch的方式查询出所有员工信息(包含所在的部门信息)
7.请解释cascade属性delete和delete-orphan的区别。
8.请解释inverse属性的作用,以及如何恰当是使用它优化查询的性能。
9.请解释Hibernate查询中出现的N+1问题,并提出解决方案。
10.请举例说明一对一关联映射的两种实现方式
11. Hibernate映射文件如下:
<class name="order" table="t_order">
<id name="id" type="integer">...</id>
<set name="items" cascade="save-update" inverse="false">
<key column="order_id" foreign-key="fk_item_order"/>
<one-to-many class="Item"/>
</set>
</class>
<class name="Item" table="t_item"> <id name="id" type="integer">
<property name="productName" type="string">
<column name="product_name" not-null="true" length="50"/>
</property>
</class>
请写出HQL:
1) 查询包含指定条目(Item)的所有订单(order)
2) 分别使用select fetch和join fetch两种方式查询所有的订单信息(
12.Hibernate映射文件如下:
<class name=“product” table=“t_product”>
<id name="id" type="integer">
<generator class="native"/>
</id>
<property name="name" type="string"/>
<joined-subclass name="Book" table="t_book">
<key column="id"/>
<property name="author" type="string"/>
</joined-subclass>
</class>
1) 查询指定name的所有Book信息
2) 查询所有product信息(只需包含id和属性即可)
13.请举例说明如何使用discriminator标记和discriminator-value
属性实现将继承关系映射到一张表中的映射策略。
14、请解释说明dynamic-update和dynamic-delete属性的意义。
15、请举例说明formula属性的意义。
16、解释说明hibernate对分页查询的支持。
17,请简单描述使用Criteria进行条件查询的基本步骤;
18,请说明如何在Hibernate使用Native SQL;
19,请简要的描述一下使用Hibernate进行大批量更新的经验;
20,请简要的描述一下使用Hibernate二级高速缓存的经验;
224

被折叠的 条评论
为什么被折叠?



