hibernate面试十大理论题.doc

上传人:苏美尔 文档编号:7203754 上传时间:2020-11-05 格式:DOC 页数:4 大小:28.50KB
返回 下载 相关 举报
hibernate面试十大理论题.doc_第1页
第1页 / 共4页
hibernate面试十大理论题.doc_第2页
第2页 / 共4页
hibernate面试十大理论题.doc_第3页
第3页 / 共4页
hibernate面试十大理论题.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《hibernate面试十大理论题.doc》由会员分享,可在线阅读,更多相关《hibernate面试十大理论题.doc(4页珍藏版)》请在三一文库上搜索。

1、Hibernate面试十大理论题1、 请简述hibernate开发程序的优势Hibernate是一个数据持久化框架,它封装了jdbc简化了对数据库的相关操作,它是一个ORM(对象-关系映射模型)的实现,使面向对象程序能够更好的操作关系型数据库,它提供了丰富的查询方式(hql,本地sql,criteria)和多种数据加载机制以及数据缓存机制,能够提高程序的性能,减少系统的开销。2、 简述hibernate环境的搭建1、 导入hibernate相关的jar包2、 然后配置hibernate.cfg.xml文件3、 编写相关的实体映射文件(类表)(属性列名)4、 将实体映射文件加入到hibernat

2、e.cfg.xml中3、 简述hibernate配置实体映射文件的内容根节点是hibernate-mapping,下面有class节点,class节点的name属性对应的是实体映射文件的路径,table属性是实体所对应的数据库表的表名。Class下面有id和property,id是配置数据库表中主键对应的类的属性,property是配置数据库表的其他列对应的类的属性,属性type是对应的类型,name对应是类的属性名。下面的column的属性name对应的是数据库的列名,id下面还有generator属性是主键的类型,其中常用的有assigned是自定义主键,identity是sql数据库自动

3、生成,sequence是Oracle数据库自动生成,sequence还要配置param调用哪个序列。如果有多对一要配置节点,一对多要配置节点。4、 Hibernate的运行机制根据Java类和数据库表的映射关系配置,依赖Java的反射机制,xml解析技术和jdbc完成对象与数据库之间数据的转换操作,以及对象的关系操作,通过解析配置文件将发出的数据库操作指令转换成为相应的sql语句来完成操作。5、 请列举hibernate核心借口和类,以及作用和常用方法Hibernate的核心接口有:Configuration:配置并启动hibernate,它的configure()是读取映射信息到内存,bui

4、ldSessionFactory方法是创建sessionFactory实例,把configuration对象包含的所有配置信息拷贝到sessionFactory缓存中。Sessionfactory:负责初始化hibernate,它的openSession方法是负责创建session对象。Session:负责执行持久化对象的CRUD操作,它的beginTransaction()方法是开始事务。它有save(保存),update(更新),delete(删除),get(查询),load(查询)等方法。Transaction:负责事务的相关操作。Query,SQLQuery,Criteria:负责执行

5、各种数据库操作。它可以使用HQL语言或SQL语句两种表达方式。核心类restrictions,它为criteria查询提供约束条件。6、 Hibernate操作持久化数据的基本步骤1、 读取并解析配置文件Configuration cfg=new Configuration();2、 读取并解析映射信息,创建sessionFactory对象SessionFactory factory=cfg.buildSessionFactory();3、 得到sessionSession session=factory.openFactory();4、 开始事务(增删改必须,查可选)session.begi

6、nTransaction();5、 数据库操作Crud.6、 提交事务(回滚事务)session.getTransaction().commit();/ session.getTransaction().rollback();7、 关闭sessionsession.close();7、 使用3种方式查询A表中第5行到第10行的数据并按照C列排序Configuration cfg=new Configuration();SessionFactory factory=cfg.buildSessionFactory();Session session=factory.openFactory();tr

7、ysession.beginTransaction();1、 String hql=”from A order by C”;Query query=session.createQuery(hql);Query.setFirstResult(5);Query.setMaxResult(5);List list=query.list();2、 String sql=select * from(select A.*,rownum r from A where rownum 5 order by C;SQLQuery sqlQuery=session.createSQLQuery(sql).addEn

8、tity(A.class);List list=sqlQuery.list();3、 Criteria cri=session.CreateCriteria(A.class);cri.setFirstResult(5);cri.setMaxResults(5);cri.addOrder(Order.asc(C);List list=cri.list();Iterator iter=list.iterator();session.getTransaction().commit();catch(Exception ex)Ex.printStackTrace();session.getTransac

9、tion().rollback();finallysession.close();8、 Session的load和get方法,list和iterator方法的区别,并简述list和iterator方法使用的场合Load和get方法都是先从缓存中查找。不同的是load先创建代理对象,再根据条件去缓存查找,如果缓存中没有数据就去数据库查,数据在后面没有被使用也不会去查询数据库,支持延迟加载,没有符合条件的数据会抛出异常;get在缓存中没有找到就回去数据库查找,不管数据在后面有没有使用都会去查,如果没有找到相应的数据就返回null。List和iterator的区别在于:list查询是每次都将符合条件

10、的数据全部查询出来,它不会从缓存中查询,而是直接查询数据库,不管数据在后面有没有使用都去查;iterator查询是查出符合条件的数据的id,先在缓存中根据id查找有没有符合条件的数据,如果没有则去数据库查找,而且数据在后面没有使用的时候不会去查询,而是在使用时再去查。List一般使用在需要全部数据的时候,iterator一般使用在不需要全部数据或者数据不是第一次查询的时候,这样能够提高程序性能,减少系统开销。9、 请简述hibernate的一级缓存和二级缓存,以及如何实现Hibernate的一级缓存是session级别的缓存,一级缓存是由hibernate本身管理,它不存在并发问题,也没用安全

11、隐患。Hibernate的二级缓存是sessionFactory级别的缓存,Hibernate本身并没有提供二级缓存,它只提供了相应的接口,用户可以自行配置hibernate二级缓存。Hibernate二级缓存会出现并发问题引发脏读,数据过大会缓存到本地磁盘,存在安全隐患,一般很少使用hibernate二级缓存。使用二级缓存为避免脏读和安全隐患,可以设置缓存策略为事务型或者只读型。利用ehcache实现hibernate二级缓存,1、 导入相关的jar包(ehcahe.jar)2、 配置缓存框架(ehcache.xml)3、 配置hibernate org.hibernate.cache.Eh

12、CacheProvidertrue4、 配置哪些使用二级缓存Usage为缓存策略,可自行修改。read-write(读写),read-only(只读)10、 请简述inverse cascade lazy关键字的作用Inverse意为反转,它有true和false两个属性,在关联关系中可以设置,属性为true的一方不负责维护关系,属性为false的一方来维护关系,在多对一关系中一般将一这一方的inverse设置为true,有助于提高程序性能。Lazy是延迟加载,延迟加载是指在需要数据时才加载数据,它有类级别,关联级别和属性级别(hibernate3.0新增),lazy为true的时候是延迟加载,lazy为false的时候是不延迟加载。Cascade是级联操作,级联操作是在进行数据修改等操作时是否将与之相关的数据进行相应更改。属性设置为none的时候是不进行级联,属性为all的时候是对所有操作都进行级联,属性为save-update的时候是进行增加或更新是进行级联,属性为delete的时候是进行删除操作时级联。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1