hibernate题目详解

Hibernate简答题详解

 

1、请简述hibernate开发程序的优势

Hibernate是一个持久化数据的框架,封装了jdbc简化了数据的访问和操作;通过orm(对象-关系映射模型)使用面向对象的方式操作关系型数据库;hibernate还提供了丰富的查询方式(hql查询,本地sqlcriteria)以及多种加载数据方式;数据的缓存机制,提高了程序的效率,减少了系统的开发。

2、简述hibernate环境的搭建

a) 导入相关的.jar

b) 配置hibernate.cfg.cml文件,配置<session-factory>节点

c) 创建相关的实体,配置实体映射文件entity.hbm.xml

d) 配置hibernate.cfg.xml文件,配置<mapping>节点

3、简述hibernate配置实体映射文件的内容

entity.hbm.xml实体映射配置文件中,

1)其中有class根节点,class根节点中有  name属性:实体class类路径;table属性:数据库表名;

2)class根节点中包括id子节点(主键生成策略:assignedidentitynativesequence)、

3)property子节点(对象属性与数据库表中的列之间的映射,column节点)、

4)many-to-one子节点,(多对一,主要建立对象之间的关联关系)

5)set子节点(对象之间的关联关系,其中包括<key><column></column></key> <one-to-many class=””>一对多子节点)

6)在class根节点外可配置,命名sql<query>节点                                                                                                                                                                                                                                                                                                 

4、Hibernate的运行机制

通过java类和数据库之间的配置映射,hibernate依赖java的反射机制,xml的解析技术,jdbc完成面向对象与数据库之间数据的转换,以及关系关联的配置。

运行机制是根据发出的数据库操作指令,通过解析配置文件,转换成相应的sql语句

5、请列举hibernate的核心接口和类,以及常用方法和作用

Configurationconfigure();buildSessionFactory()

SessionFactoryopenSession()

Session1)save(),

2)update(),

3)delete(),

4)createSqlQuery(),

5)createQuery(),

6)createCriteria(),

7)beginTransation(),打开事务

8)get(),

9)load()

Transactioncommit();提交事务rollback()

Querylist(),setFirstResult(),setMaxResult()

Criteria:list(),setFirstResult(),setMaxResult(),Restriction

6、Hibernate操作持久化数据的基本步骤

a) 配置hibernate.cfg.xml文件,创建Configuration

b) 解析实体映射配置文件,创建SessionFactory

c) 得到打开Session

d) 打开事务,(增删改必要,查询可选)

e) 处理持久化数据

f) 提交事务

g) 关闭session

7、使用3种方式查询A表中第5行到第10行的数据,并按照C列排序

Hql方式:

Query query=session.createQuery(“from A as a order by a.c”);

List list=query.setFirstResult(5).setMaxResult(5).list();

Sql

String sql=”select * from A (select A.*,rownum r from A where rownum<10)a where a.r>5  order by a.c”;

SqlQuery sqlquery=session.createSqlQuery(sql);

List list=sqlquery.list();

Criteria

Criteria criteria=session.createCriteria(A.class);

criteria.addOrder(Order.desc(“c”));

List list=criteria.setFirstResult(5).setMaxResult(5).list();

8、Sessionloadget方法,listiterator方法的区别。

Sessionloadget方法的区别:

1)load方法,在不使用数据时,它不会访问数据库;get方法,在不使用数据时,也会访问数据库

2)Load方法,当使用的数据不存在时,会报NotFoundObjectException异常;get方法,当使用的数据不存在时,返回一个null

3)Load方法支持延迟加载;get方法不支持延迟加载

Listiterator的区别:

1)list方法查询时,每次发出一条sql语句,获取全部信息

2)Iterator方法查询时,每发出首先查询出满足条件的id总记录数,然后根据这些id依次查询,(即发出N+1sql语句,N为满足条件的id总记录数)

 

9、请简述hibernate的一级缓存与二级缓存,以及如何实现

一级缓存:session级别     ,他的物理介质是内存  ,不存在并发问题,独立于每次会话,是安全的

二级缓存:sessionFactory级别 ,物理介质是内存和硬盘;存在并发问题,并发问题解决方案:设置为散装数据,缓存策略为事务型和只读型;是不安全的

 

二级缓存如何实现:

1)导入相关的.jar

2)配置hibernate.cfg.xml文件,配置<property name=”hibernate.cache.second_level_cache_provinder”>true</property>.....

3)配置哪些查询需要缓存<cache usage=”write-read”>

 

为什么使用缓存?

提高效率,节省内存。

10、请简述inverse   cascade    lazy  关键字的作用

Inverse:反转,设置维护关联。Inverse=false ,为主动方;主动方是主动维护关联表的一方。

Cascade:设置对象的级联操作。Cascade=all,所有都进行级联操作;=save-update,对添加或修改对象时,进行级联操作;=delete,对删除对象时,进行级联操作;=none,所有对象取消级联操作

Lazy:延迟加载,即需要这个数据时,才加载该数据。Lazy=true为延迟加载;lazy=false,为及时加载,即不需要数据,他也会全部加载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值