`
sefcertyu
  • 浏览: 248933 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

级联操作与hibernate 数据状态

阅读更多

什么是主关键字?级联更新、级联删除有什么作用?

 

主关键字就是主键,例如员工表中的员工ID是主键,主键是唯一的,就像身份证和学生证一样。
一个表可以有一个或者多个主键,例如选课表必须有2个主键组成,一个是课程ID,另一个是学生ID,只有同时具备,才能确定这一条数据的唯一性。

级联更新就是好比学生表中的的张三选了一门叫做高数的课程,在选课表中就有张三和高数共同组成的一条选课记录,如果级联更新,当学生表中的张三改名为张四,他的选课表中的张三也会自动改为张四

级联删除,例如员工表中一项数据是部门ID,部门ID是部门表的主键,如果是级联删除,当删除了部门A的时候,会把所有属于部门A的员工都给删除。 

Hibernate的三种数据状态

 

在Hibernate中,对象有三种状态:临时状态、持久状态和游离状态。
临时状态 :当new一个实体对象后,这个对象处于临时状态,即这个对象只是 一个保存临时数据的内存区域,如果没有变量引用这个对象,则会被jre垃圾回收机制回收。这个对象所保存的数据与数据库没有任何关系,除非通过 Session的save或者SaveOrUpdate把临时对象与数据库关联,并把数据插入或者更新到数据库,这个对象才转换为持久对象。
例如:Emp e=new Emp();    //创建临时对象
          e.setEmpno((long) 8888);
          e.setEName("mike");
          ...
          EmpDAO d=new EmpDAO();
          d.save(e);      //持久化
          ...

持久状态 :持久化对象的实例在数据库中有对应的记录,并拥有一个持久化表示(ID)。对持久化对象进行delete操作后,数据库中对应的记录将被删除,那么持久化对象与数据库记录不再存在对应关系,持久化对象变成临时状态。
    持久化对象被修改变更后,不会马上同步到数据库,知道数据库事务提交。在同步之前,持久化对象是脏的(Dirty)。
例如:
          Emp e=new Emp(); //创建了临时的对象
          EmpDAO edao= new empDAO();
          e=edao.findbyEmpno((long) 7786);    //使对象与数据库记录对应,从而持久化
          e.setEname("新的名字");                     //修改了持久化对象,使之处于 Dirty
          ......
          edao.saveorupdate(e);                      //保存,但是仍然 Dirty
          tran.commit();                                     //提交,实现与数据库同步,不再Dirty
          ......

游离状态 :当Session进行了Close、Clear或者evict 后,持久化对象虽然拥有持久化标识符和与数据库对应记录一致的值,但是因为会话已经消失,对象不在持久化管理之内,所以处于游离状态(也叫:脱管状态)。 游离状态的对象与临时状态对象是十分相似的,只是它还含有持久化标识。


其中,持久化状态的对象,简称为:PO
而临时状态和游离状态的对象,简称为: VO


下图是Hibernate下对象状态的变化关系示意图:

 

  • 大小: 23 KB
分享到:
评论

相关推荐

    Hibernate的级联操作(增,删,该)

    除了上述常见的级联类型,Hibernate还提供了其他的级联选项,如`CascadeType.REFRESH`用于刷新关联对象的状态,`CascadeType.DETACH`用于断开与Session的关联,以及`CascadeType.HALF`等更复杂的级联行为。...

    hibernate many-to-many级联保存,级联更新,级联删除

    在Java的持久化框架Hibernate中,Many-to-Many关系是一种常见的数据库表之间的关联方式,它表示一个实体可以与多个其他实体进行...但同时要注意,不当的级联操作可能导致数据安全问题,所以需要根据实际情况谨慎选择。

    hibernate基础 二 关联映射 级联操作

    ### Hibernate基础之关联映射与级联操作 ...以上是关于Hibernate中关联映射和级联操作的基础知识概述,掌握了这些内容后,开发者能够在实际项目中更加灵活高效地使用Hibernate进行数据持久化操作。

    Hibernate的缓存级联查询

    一级缓存是基于Session的,它保存了自Session打开以来所有操作的对象状态,减少了对数据库的直接访问。Session提供`evict`和`clear`方法来管理缓存内容。二级缓存则基于SessionFactory,能在进程甚至集群间共享数据...

    hibernate的应用表之间的级联关系

    级联关系是指在对一个实体进行操作时,同时对与之相关联的其他实体进行相同的操作。这在处理一对多、多对一、多对多等关联关系时特别有用。 **一、级联操作类型** 1. **SAVEOrUpdate**:当主实体保存或更新时,...

    hibernate_second2项目源码

    在这个项目中,我们将深入探讨Hibernate的级联操作,以及如何实现数据的级联保存,这对于理解和应用Hibernate在实际开发中的关系映射管理至关重要。 Hibernate是Java领域中广泛使用的对象关系映射(ORM)框架,它...

    实体Bean之间的级联关系

    实体Bean之间的级联关系是Java持久化框架如Hibernate或JPA中的一个重要概念,它涉及到对象关系映射(ORM)中的数据操作同步性。在数据库中,实体Bean通常代表表中的行,而实体间的级联关系则反映了表之间的关联。...

    jsp hibernate 数据保存操作的原理.docx

    如果实体对象有与之关联的对象并且配置了级联操作,那么Hibernate还会递归地处理这些关联对象,例如级联保存。 #### 三、`session.update()`方法详解 `session.update()`方法用于将一个处于游离状态的对象重新纳入...

    hibernate与mybatis一起使用取长补短

    Hibernate是一款强大的ORM框架,它提供了完整的对象模型支持,包括实体管理、级联操作、事务处理等。它的优势在于提供了一种面向对象的方式来操作数据库,使得开发人员无需关注底层SQL的编写,提高了开发效率。然而...

    Hibernate插入数据

    在IT行业中,Hibernate是一个非常重要的Java持久化框架,它简化了数据库操作,使得开发者可以更加专注于业务逻辑,而不是底层的数据存取细节。本篇将详细探讨“Hibernate插入数据”的相关知识点,结合学习心得,深入...

    hibernate的_映射、三态、脏数据、Session缓存

    当Session关闭或事务提交时,Hibernate会比较当前对象的状态与最后一次刷新时的状态,如果发现有变化,则会执行必要的SQL语句来同步这些变化到数据库。 #### 四、Session缓存 **Session缓存**是指在一个Session...

    hibernate-core 核心jar包

    Hibernate 是一个开源的对象关系映射(ORM)框架,它允许Java开发者将数据库操作与业务对象进行解耦,简化了数据库编程。`hibernate-core`是Hibernate的核心库,包含了执行ORM功能所需的主要组件。 在Hibernate-...

    ajax实现下拉列表级联

    在本案例中,我们将创建一个EJB实体bean,该bean负责从数据库中检索数据,并通过JPA(Java Persistence API)或Hibernate等ORM框架与数据库进行交互。 1. **创建EJB实体bean**:首先,定义一个EJB接口,其中包含...

    Hibernate 框架

    Hibernate框架是Java开发中的一款非常重要的对象关系映射(ORM)工具,它简化了数据库与Java应用程序之间的数据交互。在本教程中,我们将深入探讨Hibernate的核心概念、主要功能以及如何在实际项目中应用。 首先,...

    hibernate3.6.10final官方文档

    Hibernate作为一款强大的对象关系映射(ORM)工具,能够帮助开发者将Java类与数据库表进行无缝对接,极大地简化了数据访问层的编程工作。 一、Hibernate概述 Hibernate是一个开源的Java ORM框架,它允许开发者使用...

    hibernate_reference中文版和Hibernate中文手册

    Hibernate作为一个开源的、强大的持久化框架,极大地简化了数据库操作,使得开发人员能够以面向对象的方式处理数据。下面将详细阐述这两个文档中涉及的关键知识点。 1. Hibernate概览:Hibernate是一个基于Java的...

    Hibernate\hibernate3.2官方中文参考手册PDF

    Hibernate是一个开放源代码的对象关系映射(ORM)框架,它极大地简化了Java开发者与数据库之间的交互,通过将业务对象与SQL语句解耦,使得开发人员可以更加专注于业务逻辑,而不是底层的数据存储。 在Hibernate 3.2...

    [Hibernate雨夜的寂寞原创教程].Hibernate

    它通过映射Java类到数据库表,将数据操作转化为对Java对象的操作,实现了对象与数据库的解耦。 2. **实体和实体映射**:在Hibernate中,每个Java类对应数据库中的一个表,类的实例对应表的一条记录。你需要定义一个...

    Hibernate3.6中文文档.rar

    ### 八、实体状态与生命周期 Hibernate定义了四种实体状态:瞬时态、持久态、托管态和游离态。理解这些状态有助于正确处理对象的生命周期,避免出现并发问题。 ### 九、性能优化 为了提高性能,Hibernate提供了多种...

    struts2+hibernate+spring多表操作示例

    4. **多表查询与操作**:在多表关联的场景下,常见的操作有联合查询、级联保存/更新和级联删除。例如,通过Hibernate的 Criteria 或 HQL 查询语言,可以方便地执行多表的JOIN操作。级联保存时,只需要保存父对象,...

Global site tag (gtag.js) - Google Analytics