hibernate简介(Session,几种状态,方法······等)概括全面,经典

2.Hibernate跟jdbc的关系

 

       Hibernate封装JDBC,持久化内存中的对象,同步到数据库 .

           1.关于封装,我得强调两点:

(1).把尽可能多的东西藏起来.对外提供简捷的接口.

(2)把所有的属性藏起来

      当然我们,我们如果能够做到单一原则就更好了

        2.关于持久化的概念

      持久化定义:将程序数据在持久状态和瞬时状态间转换的机制。

       这里讲的是Hibernate的话得讲一下中的几种状态:瞬时状态,持久状态,管状态

  1. 瞬时状态(Transient):指一个对象在内存中开辟空间.如 User user=new User();此时user对象就是瞬时状态的.
  2. 持久状态(Persistent):数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。可以以文件,数据库以及xml等形式.
  3. 脱管状态(Detached):当与某持久对象关联的session被关闭后,该持久对象转变为脱管对象。当脱管对象被重新关联到session上时,并再次转变成持久对象。

 这里我想总结一点关于瞬时状态和持久状态:瞬时态就是存在于内存中的,如果电脑关了后,再启动,之前在内存中的对象已经不在了,如果持久状态的话,保存在磁盘上的数据对象,当需要时还是可以加载到内存中,不会因电脑的启动而受到影响!

 

3.Session

 Session接口是Hibernate向程序提供操纵数据库的最主要接口,是单线程对象,它提供了基本的保存、更新、删除和查询方法。它有一个缓存,保存了持久化对象,当清理缓存时,按照这些持久化对象同步更新数据库。

注意:session的某些方法(persist,load)不会立即把改动写入数据库,而是缓存到session的一级缓存中,除非显示调用flush,或者关闭session时才会更新到数据库

  1. 瞬时状态(Transient):没与session关联
  2. 持久状态(Persistent):与session关联,没close
  3. 脱管状态(Detached):当session.close后

 

4.Session的方法详解

1.保存 

          svae:立即插入数据库,并且返回主键

          persist:不立即(延迟)插入数据库,无返回值

2.获取

             load:加载对象后,对对象的改动不会立即刷新到db,必须flush到db

                       ex: User user=session.load(User.class,2);

                                user.setName('gt');

                                user.flush();   (延迟加载)

             get:加载对象后,对对象的改动立即刷新到db

3.更新

           update:持久化对象,更新

     saveOrUpdate包含save()和update()功能,如果传入的参数是临时对象(没有保存过)就调用save()方法;如果传入的参数是游离对象,就调用update()方法

           merge:不会持久化对象,只会把托管对象的修改更新到db

4.删除

          delete:从数据库中删除与JAVA对象对应的记录

 

5.清理

           flush:把缓存同步到db

           clear:清除session的缓存大小(更新批量时,应考虑)

 

 

5.映射关系

    详见博客内单独介绍的文章

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值