Hibernate相关问题

1.简述Hibernate有哪些缺点

2.请简述Hibernate框架设计原理

3.请简述如何使用Hibernate访问数据库

4.什么是一级缓存
Hibernate创建每个Session分配一块独立的缓存区,用于存放该Session查询出来的对象,这个分配给Session的
缓存区称之为一级缓存,也叫Session缓存。

5.为什么使用一级缓存
Session取数据时,会优先向缓存区取数据,如果存在数据则返回,不存在才会去数据库查询,从而降低了数据库访问次数
,提升了代码运行效率

6.如何使用一级缓存
一级缓存是默认开启的,在使用Hibernate的API查询时会自动使用。

7.一级缓存规则
一级缓存是Session独享的,每个Session不能访问其他Session的缓存区。
Session的save、update、delete操作会触发缓存更新。

8.什么是延迟加载
在使用某些Hibernate方法查询数据库时,Hibernate返回的只是一个空对象(除id外属性都为null),并没有
真正查询数据库。而在使用这个对象时才会触发查询数据库,并将查询的数据注入到这个空对象中。这种将查询时机推迟到
对象访问时的机制称之为延迟加载

9.为什么使用延迟加载
可以提升内存资源的使用率
可以降低对数据库的访问次数

10.什么是关联映射
若两张表具有关联关系,我们可以在实体对象和映射关系文件中配置这种关系,然后使用Hibernate操作其中一张表时,
它可以通过配置关系自动的帮我们操作到另外一张表,这种通过配置自动操作另一张表的手段称之为关联映射。

11.关联映射的作用
当我们操作一张表的时候,Hibernate可以通过关联映射自动帮助我们操作其关系表。
这种关联操作包括
关联查询出关系表的数据
关联新增、修改关系表的数据
关联删除关系表的数据

12.关联映射的类型
一对多关联
多对一关联
多对多关联
一对一关联
继承关联

13.Hibernate中对象有哪几种状态,有什么规则

14.Hibernate中那些查询方法具有延迟加载机制

15.Hibernate中有几种类型的关联映射,你掌握哪几种

16.什么是级联操作
Hibernate中,通过关联在对一方进行增、删、改时,连带增、删、改关联的另一方数据,这种关联操作称之为级联操作

17.什么是二级缓存
二级缓存类似于一级缓存,可以缓存对象。但它是SessionFactory级别的缓存,由SessionFactory负责管理。
因此二级缓存的数据是SessionFactory负责管理。因此二级缓存的数据是Session间共享的,不同的Session对象
都可以共享二级缓存中的数据。
二级缓存的使用场景
对象数据频繁共享
数据变化频率低

18.如何使用二级缓存
导入ehcache.jar
在src下添加缓存配置文件ehcache.xml
在hibernate.cfg.xml中开启二级缓存,指定采用的二级缓存驱动类
在要缓存的对象对应的映射文件中,开启当前对象的二级缓存支持,并指定缓存策略

19.如何使用二级缓存
二级缓存策略
只读型(read-only)
缓存不会更新,适用于不会发生改变的数据。效率最高,事务隔离级别最低
读写型(read-write)
缓存会在数据变化时更新,适用于变化的数据
不严格书写型(nonstrict-read-write)
缓存会不定期更新,适用于变化频率低的数据。
事务型(transactional)
缓存会在数据变化时更新,并且支持事务。效率最低,事务隔离级别最高。

20.什么是查询缓存
查询缓存依赖于二级缓存,可以理解为特殊的二级缓存,也是SessionFactory负责维护
查询缓存可以缓存任何查询到的结果。
查询缓存是以hql为key,缓存该hql查询到的整个结果。即如果执行2次同样的hql,那么第二次执行时,此次查询
可以从查询缓存中取到第一次查询缓存的内容。
查询缓存的适用场景
频繁适用同样的sql做查询

21.如何使用查询缓存
开启二级缓存
在hibernate.cfg.xml中,开启查询缓存
在查询代码执行前,指定开启查询缓存。

22.Hibernate一对多级联修改/删除时,需要注意哪些问题

23.Hibernate有哪几种查询方式

24.请简述Hibernate一级缓存和二级缓存的区别和联系

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。