Hibernate简答题

ACCP6.0 hibernate简答题:

1.什么是持久化?可以持久化的介质有哪些?
持久化就是把数据从瞬时状态和持久化转换的一种机制,介质有文件,数据库
2.什么是ORM?数据库和java类如何对应的?常用的ORM框架有哪些?
--ORM就是对象关系映射,
数据库的列对应实体的属性
数据库的行记录对应实体的对象
数据库表对应实体类

常见的有JPA(sun),Apache OJB ,Hibernate ,mybatis(google)、
3.Hibernate常用的接口有哪些?
SessionFactory,Query,Session,Transaction,Criteria,SQLQuery
4.简述Hibernate操作数据库的步骤?
1.加载解析配置文件,
2.读取并解析映射信息,创建SeesionFactory
3.打开Session
4.开启事务
5.数据库的操作
6.事务提交或回滚
7.关闭Session

5.Hibernate中实体对象的状态有哪几种?
自由状态,持久化状态,游离状态
6.Session接口常用的方法有哪些?
save(),get(),load(),update(),delete(),beginTransaction()
7.hbm.xml中的主键生成策略有些?
increment ---自动增长,按数值顺利递增,增量为1
native------根据数据库自动升成
sequence --oracle 独有
assigned ---手动设置

8.常见的实体映射关系有几种?分别举例说明!
1:1 --公民和身份证
1:M(M:1) --部门和用户,地区和街道,用户和订单
M:N --角色和权限,订单和产品
9.说明以下属性的作用lazy,fetch,inverse,cascade?
lazy:延迟加载
--true 延迟加载
--false 即时加载,访问1方的时候N方信息自动加载
fetch:抓取策略
--select 两次抓取(默认)
--join 一次抓取(迫切左外连接)
inverse:控制权转移
--true (1:M是为true,对方为主控方)
--false
cascade:级联操作
10.hibernate实现分页具体需要如何设置?
1.获得总记录个数
2.计算得到总页数
3.设置setFirstResult((pageNo-1)*pageSize)
4.设置setMaxResult(pageSize)
5.得到分页结果
11.get()和load()方法有什么区别?
get()和load()方法都能获取一个对象,当数据库中不存在记录时,get()返回值是null,load()会报异常

12.list()和iterate()方法的区别?
list()每次都要 从数据库查询数据
iterate() 采用N+1次查询方式,先从数据库中先查所有的ID,在根据ID查询对象

13.什么是连接池?其工作原理是?
JDNI,就是创建和管理连接的一种技术
实现在内存中加载一定数量的连接,当程序请求连接时直接提供给程序使用,使用完毕后不会关闭连接,而是放回内存,以供其他程序请求使用
优点:减少创建连接的时间,简化编程模式,受控的资源使用
14.什么是缓存?缓存的优缺点?Hibernate的缓存分几种?
缓存是位于应用程序

和数据源之间的,用来存放临时复制数据的内存区域,其目的的为了减少数据源的访问次数,提高系统性能
优点:提高访问效率,提高系统性能
缺点:
一级缓存,二级缓存,查询缓存
15.hibernate.cfg.xml和User.hbm.xml分别是干什么的?
hibernate.cfg.xml----hibernate 配置文件
配置数据库的连接和hibernate 运行时各种属性,配置缓存,连接池等信息
User.hbm.xml -----实体类到数据库表的映射文件
配置表中字段和实体类属性的名称,类型,之间的关系

16.在hibernate.cfg.xml文件中显示SQL,格式化SQL需要设置哪些属性?
true
true
17."hibernate.dialect"属性的作用是什么?
方言,就是区别数据库的作用
18.Hibernate支持哪几种类型的查询?
hql,sql,Crcriteria
19.如何保证一个项目的高性能?你有哪些办法?
1.数据建模时,性能和规范化的取舍
2.合理采用索引(经常查询的列加索引,经常地修改的不加)
3.复杂的业务处理最好能够通过数据库编程实现
4.使用连接池(连接性能)
5.设置缓存(数据获取的性能)
6.合理的数据结构和算法
20.手写Oracle分页的SQL语句?
select t.* from
(select rownum r,m.* from
(select * from 表 order by 列名)m where rownum<=(pageNo*pageSize)
) t
where t.r>((pageNo-1)*pageSize)

相关文档
最新文档