Hibernate面试题部分汇总集合(6)

发布时间:2021-06-06

此文档主要简绍J2EE中的hibernate面试突击问题部分集合

2. Hibernate load方法加载实体对象的时候,根据映射文件上类级别的lazy

属性的配置(默认为true),分情况讨论:

(1)若为true,则首先在Session缓存中查找,看看该id对应的对象是否存

在,不存在则使用延迟加载,返回实体的代理类对象(该代理类为 实体类的子 类,由CGLIB动态生成)。等到具体使用该对象(除获

取OID以外)的时候,再查询二级缓存和数据库,若仍没发现符合条件的记录,则会抛出一个ObjectNotFoundException。

(2)若为false,就跟Hibernate get方法查找顺序一样,只是最终若没发现

符合条件的记录,则会抛出一个ObjectNotFoundException。

注释:此文出自/qqabc20082006@126/blog/static/2292852520106249825542/

Hibernate常用的接口和类

Configuration接口

|- Configuration接口的作用是对Hibernate进行配置,以及对它进行启动。在Hibernate的启动过程中,Configuration类的实例首先定位映射文档的位置,读取这些配置,然后创建一个SessionFactory对象。

SessionFactory 接口

|- 这里用到了一个设计模式――工厂模式,用户程序从工厂类SessionFactory中取得Session的实例.SessionFactory并不是轻量级的,一个项目通常只需要一个 SessionFactory就够了,但是当你的项目要操作多个数据库时,那你必须为每个数据库指定一个SessionFactory。

SessionFactory在Hibernate中实际起到了一个缓冲区的作用,它缓冲了Hibernate自动生成的SQL语句和一些其它的映射数据,还缓冲了一些将来有可能重复利用的数据。

Session接口

|- Session接口对于Hibernate 开发人员来说是一个最重要的接口。然而在Hibernate中,实例化的Session是一个轻量级的类,创建和销毁它都不会占用很多资源。这在实际项目中确实很重要,因为在客户程序中,可能会不断地创建以及销毁Session对象,如果Session的开销太大,会给系统带来不良影响。但值得注意的是 Session对象是非线程安全的,因此在你的设计中,最好是一个线程只创建一个Session对象。

Hibernate使用Session来存取,它是持久化管理器接口,代表与数据库

精彩图片

热门精选

大家正在看