如何理解Hibernate的持久化?

学习Hibernate,必需要理解什么是持久化?结合了一下网上的各位大佬的观点和本身的理解:数据库

持久化概念

持久化是将程序数据在持久状态和瞬时状态间转换的机制。通俗的讲,就是瞬时数据(好比内存中的数据,是不能永久保存的)持久化为持久数据(好比持久化至数据库中,可以长久保存)。缓存

而Hibernate是对JDBC的轻量级封装,其持久化就是一个把数据存储到数据库的过程,也就是说,能够将Hibernate的持久化通俗地理解为:把内存中的对象保存到数据库里去,须要的时候再从数据库里拿出来。(即把缓存中的东西放到数据库中使之能够持久存在。)session

 

3种状态

实体类对象在Hibernate中有3种状态,分别是:瞬时状态、持久状态和脱管状态。学习

  • 瞬时 :指的是没有和hibernate发生任何关系,在数据库中也没有对应的记录,一旦JVM结束,这个对象也就消失了。 
  • 持久 :指得是一个对象和hibernate发生联系,有对应的session,而且在数据库中有对应的一条记录 。
  • 脱管 :指的是一个对象虽然在数据库中有对应的一条记录,可是它所对应的session已经关闭了。

 

持久化对象的特征

持久化的对象具备如下特征:hibernate

  • 存在于一个session事例的缓存中(可理解为:持久化对象老是被一个session事例关联)。
  • 持久化对象在数据库中有相关记录与之对应。
  • Session在清理缓存时,会根据持久化对象的属性变化来同步更新数据库。
  • 瞬时状态——>持久化状态:Session的save()方法。
  • 脱管状态——>持久化状态:Session的update() ,saveOrUpdate(),lock()方法。
相关文章
相关标签/搜索