hibernate

hibernate总结:

 

1、ORM映射。

  对象模型和关系模型的映射关系。也就是说,哪个类对应哪个表,哪个属性对应哪个列。而我们做持久层的目的就是完成对象模型和关系模型的数据转换。

 

2、hibernate优点和缺点。

  优点:

     Hibernate是一种开放源代码的对象/关系映射持久层框架

     事务处理,生命周期管理不依赖于J2EE容器

     解决数据库的方言问题

    hibernate只需要操作对象就可以完成数据库的增、删、改、查操作。使用hibernate更面向对象

     轻量级、无侵入性,移植性很好

 

   缺点:

    不适用于批量对对象进行操作时

不能使用数据库特定映射

    表间关系很复杂时,会造成性能问题

 

 

 

3、hiberante环境的搭建

4、hibernate的编码。SessionFactory、Session、Query接口的使用。事务的开启、回滚、提交。

 

 

5、主键生成策略。

  increment:由hibernate来生成主键。数据库可以不是自动增长列,不能用于集群。

   identity:利用DB2、sqlserver、mysql的自动增长列来产生主键。

   sequence:利用oracle的序列产生主键。

   uuid:利用UUID算法产生字符串主键。

   native:根据方言描述,来决定采用identity或sequence产生主键。

   foreign:使用另一个表的主键,作为当前表的主键。用于一对一的主键关联。

  

6、对象状态

   瞬时状态:对象是新建的。数据库中没有相关的记录,不受sesion管理。

   持久状态:数据库中有相关记录,受session管理。对象数据和数据库数据随时同步。

   游离状态:当session一提交,数据库中有相关记录。但该对象不受session管理。

 

 

7、原生SQL查询,利用SqlQuery接口查询,使用SQL语句来查询,用于比较复杂的查询。

8、HQL查询,利用Query接口查询,利用实体类、属性来查询数据。

 

9、get和load的区别。

   get:立即加载,无论是否使用都发出sql语句作查询。如果主键不存在时,返回null

  

  load:延迟加载,不立即发出sql语句查询,要使用时,再发出SQL语句查询。如果主键不存在,抛出异常。

 

10、HQL查询中参数绑定的两种方式(参数名称:name  

参数位置?,从0开始)

参数名称:

Queryquery=session.createQuery(

“from Useruser where user.name=:customername ”);

query.setString("customername","张三");

 

参数位置:

Queryquery=session.createQuery(

“from Useruser where user.name=? ”);

query.setString(0,"张三");

 

 

11、HQL查询中的分页。

   Query query = session.createQuery("fromUserInfo");

   //设置起始条数,第一条从0开始。

   query.setFirstResult(0);

   //设置显示条数

   query.setMaxResults(2);

 

 

 

12、hibernate的实体映射

一对一(主键关联(一个表的主键同时又是另一个表的外键,没有专门的外键列),外键关联(有专门的外键列,是唯一的,是一对多的特例))一般使用外键关联,外键可以设置为null,但主键不行。

一对多、多对多

 

13、掌握cascade和inverse区别。

cascade类似数据库的级联操作,主表记录更改或删除,从表记录是否做相应的操作。维护是记录。

inverse控制反转。如果为true。表示在插入当前对象时,不插入外键,外键的维护由另一方完成。一般设置在一方,外键关系一般由多方维护,维护的是外键。

 

14、一级缓存和二级缓存的区别。

一级缓存:(事务级缓存)是基于        Session的生命周期实现的,session一旦关闭,一级缓存就清除,一级缓存为hibernate自带的缓存,是必需的。

 

二级缓存:(应用级缓存)即在某个应用中或应用中某个独立数据库访问子集中的共享缓存,此缓存可由多个事务共享.在Hibernate中,应用级缓存由SessionFactory实现

 

 

15、二级缓存的产品EHcache、Oscache。及相关的配置。查询缓存是针对查询出的集合进行缓存,由于条件不一致导致集合内容不一致,利用率不高。

 

16、延迟加载的概念。分为对象延迟加载(load),集合延迟加载(一对多、多对多的关联集合),属性延迟加载(clob大数据使用时)

 

17、连接池的概念及工作原理。(c3p0、dbcp、proxool)

   传统的持久层操作中,每一次请求都要建立一次数据库连接,使用完后都得断开,以释放内存资源。频繁的数据库连接操作势必导致流操作过多,占用很多的系统资源,从而导致响应速度下降。而且不能控制被创建的连接对象数,导致系统资源被毫无顾及的分配出去,最终可能导致服务器内存崩溃。

   而连接池就是为数据库连接建立一个“缓冲池”。预先在连接池中放入一定数量的连接,当需要建立数据库连接时,只需从连接池中取出一个,使用完毕之后再放回去。由于连接一直不关闭从而减少了流操作,同时可以设置最大连接数来控制所建立的连接数量,防止服务器内存崩溃。

   工作流程:当持久层需要一个连接对象时,先去连接池中寻找空闲连接。找到后,将连接对象状态设置为忙碌;用完后,放回连接池后,又将连接对象状态设置为空闲。

如果连接池中没有空闲连接,则检查连接池是否到达最大连接数。如果没有到达最大连接池,则创建新连接并分配给请求的用户;如果达到了最大连接数,则等待一段时间。在等待时间内如果有连接被释放,则分配给等待用户。如果在等待时间结束后,还没有连接释放,则返回null。

 

 

18、锁机制:当多个用户同时存取或查询数据时,在一个用户操作时保证数据不被别的用户修改。

悲观锁:一个用户操作记录时不允许别的用户进行操作。类似于线程同步。效率低,适合短事务。

乐观锁:通过版本控制器实现,一个用户操作时,会记录版本号,在提交时,会检查版本号和记录版本号是否一致。如果一致,则提交,并将版本号加一;如果不一致,需要重新下载新的记录。

 


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值