java面试题网

普通会员

257

帖子

9

回复

131

积分

楼主
发表于 2018-03-22 16:46:44 | 查看: 414| 回复: 0

①概述:它是一个持久层的ORM(对象关系型映射)框架,使用Hibernate框架,不用写JDBC代码,仅仅是调用一个save方法,就可以将对象保存到关系数据库中;仅仅是调用一个get方法,就可以从数据库中加载出一个对象。

②使用Hibernate的基本流程:配置Configuration对象、产生SessionFactory、创建session对象,开启事务,完成CRUD操作,提交事务,关闭session。

③配置文件:使用Hibernate时,先要配置hibernate.cfg.xml文件。其中配置数据连接信息和方言等,还要为每个实体配置相应的hbm.xml文件,然后在hibernate.cfg.xml文件中引入;

④关联关系映射:

a)一对多:

(Ⅰ)一方:需要加入一个包含多方的set集合,注意必须要new。

(Ⅱ)多方:添加一方的bean对象,注意不用new。

(Ⅲ)注意:只配置一方即可正常维护运行。一般一方会放弃外键维护。

b)多对多:多对多保存中,有一方必须放弃维护中间表"inverse=ture"

⑤级联关系:cascade的6种取值

none —— 不使用级联

save-update —— 保存或修改

delete —— 删除

delete-orphan —— 孤儿删除(只有一对多才有!)

all —— 除了孤儿删除,其他的所有

all-delte-orphan —— 包含孤儿删除所有的。

⑥延迟加载:

底层:动态代理技术

第一次查询时 ====> 至查询ID值,生成代理对象(只含ID)

         =====> 继续操作,如打印某属性  ==发送sql语句==> 返回查询值

类级别的延迟加载:查询的是某一个对象

session.get()不延迟加载

session.load()延迟加载

两者区别

关联级别的延迟加载

     fetch="select" lazy="true"  延迟加载(默认)

     fetch="select" lazy="false" 不延迟加载

     fetch="select" lazy="extra" 极其延迟加载

⑦Hibernate三种检索方式:

QBC(Query By Criteria)

HQL(Hibernate Query Language)

SQL(基本不用)

⑧缓存:

缓存概念

     缓存是内存中开辟的一块空间,用来保存数据

     实质是:一些集合设计

一级缓存:Session

        自带的,不能卸载。一定存在的,与Session生命周期一样长

二级缓存:

        默认没有开启,只提供了相关的策略,需第三方插件,常用EHCache。

快照机制(SnapShot)

        持久态对象,在获取的时候,会保存两份:一份在缓存区,一份在快照区;

        在事务提交之前,会自动对比缓存区和快照区的数据,

        如果不一致,会自动修改缓存和快照区数据;



您需要登录后才可以回帖 登录 | 立即注册

java面试题网无聊看看网与java建站系统提供技术支持V2.1 网站地图 © 2016-2018