zoukankan      html  css  js  c++  java
  • 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()方法使游离状态变为持久化状态. 
    


  • 相关阅读:
    归并排序
    CTE 递归
    Cordova 入门文档
    Javascript 原型链
    Windows11 正式版偷渡开启安卓子系统
    快速解决gerrit merge confict问题
    利用VPS来搭建个人主页
    检测串行序列10010
    Verilog语法总结
    深度学习中常见优化算法学习笔记
  • 原文地址:https://www.cnblogs.com/tian-chen/p/4390334.html
Copyright © 2011-2022 走看看