hibernate如何实现持久化

面试被问到,也许了解但说的不清楚

 

hibernate是一种ORM(object relation mapping,对象关系映射)框架,所谓的对象关系映射,通俗的说,就是把JAVA对象保存到关系型数据库中。

hibernate要做的事,就是让对象投影到关系数据库中,然后实施持久化。其具体实现:
建立对象到关系数据库的映射。
  example:建立User类到数据库的映射
  一个简单的类User:
  public class User{
     private int id;
     private String name;
  }
  
  User类对应的数据库表USER:
  column-name  type          rule
   id           number        P
   name         varchar2      R

当进行持久化时,需要把对象的两个属性的值保存到数据库存的USER中,如果使用JDBC的话,我们需要自己写SQL,并获取对象两个属性的值作为参数来进行持久话。SQL可能如下:
    insert into USER(name) value(?);

当使用hibernate时,首无要作好对象到表的映射关系,使用配置文件来实现:
  User.hbm.xml:
 ...
<class name="user" table="USER"><!--该类对象保存到USER表-->
      <id name="id" column="id">
        <generator class="native"/><!--这里有很多策略来生成ID,这里选择本地自动生成,-->
      </id>
      <property name="name" column="name">
  </class>
...

然后在通过hibernate.cfg.xml中配置到数据库的联接,并读取User.hbm.xml文件,就建立了映射关系了。

当需要持久化对象时,需要使用到hibernate的session对象:
 session.save(new User());
看到了吗?我们只需要操作对象就行了,也就是说,编程的人不需要看到数据库了,他只需要直接操作对象就行了。

hibernate 如何实现持久化?
答:
1.hibernate是一种ORM(object relation mapping,对象关系映射)框架,所谓的对象关系映射,通俗的说,就是把JAVA对象保存到关系型数据库中,即进行持久化的框架。

2.hibernate进行持久化首先要建立对象到关系数据库的映射。

3.hibernate根据定义的映射规则将对象持久化(保存到)数据库存中。这就实现了对象持久化。 



持久化顾名思义就是把缓存中的东西放到数据库中使之持久.对于需要持久化的对象,它的生命周期分为三个状态:临时状态,持久化状态,游离状态.
临时状态:刚刚用new语句创建,没有被持久化,不处于session的缓存中.处于临时状态的java对象被称为临时对象.
持久化状态:已经被持久化,加入到session的缓存中.处于持久化的java对象被称为持久化对象.
游离状态:已经被持久化,但不处于session的缓存中,处于游离状态的java对象被成为游离对象.
持久化对象的特征:
.  位于一个session事例的缓存中,可以说持久化对象总是被一个session事例关联
.  持久化对象和数据库中的相关记录对应
.  Session在清理缓存时,会根据持久化对象的属性变化来同步更新数据库
.  Session的save()方法把临时状态变为持久化状态.
.  Session的update() ,saveOrUpdate()和lock()方法使游离状态变为持久化状态. 


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。