`
bluerose
  • 浏览: 147607 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

关于hibernate 的one-to-many级联更新 产生脏数据的解决办法

    博客分类:
  • Java
阅读更多

之前其实就有遇到这个问题。我是在多的一方先删除掉数据 。再进行one端的update的。不然数据库里就会产生脏数据。例如

teacher.getStudentSet().clear(); 
Set newStudentSet = new HashSet(); 
//将新学生加入newStudentSet中 
teacher.setStudentSet(newStudentSet); 
dao.update(teacher); 

 

执行以上的方法  会产生如下效果。

students端新插入了数据。但是之前插入的记录的外键变为空,而没有被删除掉。

 

一直认为有很好的其他办法解决。但是就没去尝试。今天查了下。有个方法是这样的。但是不确定这是好方法。


在one实体中增加如下方法

 public void addStudentSet(Student s) {
        getStudentSet().add(s);
        s.setPerson(this);
    }

 
设置cascade="all-delete-orphan"

在方法中

DAO dao= (DAO) BeanFactory.getBean("dao"); 
Teacher teacher = dao.getTeacherById(teacherId); 
teacher.getStudentSet().clear();

//将新学生加入newStudentSet中 
teacher.addStudentSet(student1); 
teacher.addStudentSet(student2);
teacher.addStudentSet(student3);
dao.update(teacher); 

 

据说这样就可以避免脏数据的产生。不知道这样是否是正确合理的方法。有更好的方法还请大家指导下啊。

分享到:
评论

相关推荐

    Hibernate one-to-many / many-to-one关系映射

    "Hibernate one-to-many / many-to-one关系映射"是两个基本的关系类型,用于表示实体间的关联。在这个主题中,我们将深入探讨这两种关系映射的原理、配置和实际应用。 一、一对一(one-to-one)与一对多(one-to-...

    hibernate many-to-one(多对一)及 cascade(级联).doc

    ### Hibernate Many-to-One (多对一) 及 Cascade (级联) #### 一、Many-to-One(多对一) 在数据库设计中,实体之间的关系主要包括一对一、一对多、多对多等几种类型。而在ORM(对象关系映射)框架Hibernate中,...

    Hibernate one-to-many-annotation

    在Hibernate中,`one-to-many`关系是常见的实体间关系之一,表示一个实体可以与多个其他实体相关联。本文将深入探讨`Hibernate one-to-many`注解的使用和实现细节。 ### 一、`@OneToMany`注解概述 `@OneToMany`...

    hibernate one-to-many 单/双向关联映射配置心得

    本文主要关注Hibernate中的一个核心概念——一对一(One-to-One)、一对多(One-to-Many)和多对一(Many-to-One)关联映射,特别是关于“一到多”单向和双向关联映射的配置心得。 首先,让我们了解“一到多”关联...

    Hibernate one to many(many to one) 配置

    **标题与描述解析** 标题"Hibernate one to many(many to one) 配置...以上是关于Hibernate中One-to-Many和Many-to-One关联配置的基本知识。实际应用中,还需要考虑性能、并发、事务等因素,进行合理的优化和设计。

    Hibernate 一对多、多对一、级联、加载、反转

    在Java持久化框架Hibernate中,一对多(One-to-Many)、多对一(Many-to-One)、级联(Cascading)、加载(Loading)和反转(Inversing)是关系映射的重要概念,它们对于理解如何在数据库和对象之间有效地管理关联至...

    Spring+Hibernate一对多关联映射---部门与员工表的级联添加

    总结来说,Spring和Hibernate结合使用的一对多关联映射,关键在于配置正确的映射文件,设定级联策略,并在业务逻辑中利用这些配置进行数据的增删改查操作。理解并掌握这一技术,能有效提升开发效率,减少手动处理...

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

    <many-to-one name="childEntity" class="com.example.ChildEntity" cascade="all,delete-orphan" /> ``` 在这个例子中,父实体的`childEntity`属性将执行全部级联操作,包括添加、删除和更新,同时`delete-orphan`...

    hibernate-one-to-many-uni

    【标题】"hibernate-one-to-many-uni" 指的是在Hibernate框架下实现的一对多单向关联关系。Hibernate是Java开发中常用的持久化框架,它简化了数据库操作,使得开发者可以更加专注于业务逻辑而不是数据库交互。在这个...

    hibernate5--3.映射关系

    本文将深入探讨Hibernate5中的映射关系,主要包括多对多(Many-to-Many)和一对多(One-to-Many)这两种关系。 一、多对多映射(Many-to-Many) 多对多关系在数据库中表现为两个表之间存在多个连接记录,而在对象...

    Hibernate的缓存级联查询

    外键映射是通过在主表映射文件中使用`one-to-one`元素,而从表映射文件中使用`many-to-one`元素来实现。主键映射则是两个实体类的主键相互关联,这需要在`one-to-one`节点上设置`constrained`属性为`true`,以表明...

    hibernate-one-to-many

    <many-to-one name="department" class="com.example.Department" column="DEPARTMENT_ID" /> ``` 如果使用注解,上述关系已经在实体类中定义。 ### 3. 操作一对多关系 在实际应用中,我们可以通过Hibernate提供...

    hibernate one_to_many

    在Java持久化框架Hibernate中,`one_to_many`映射是一种常见的关系模型,它表示一个实体(类)可以与多个其他实体(类)关联。在这个关系中,一个实体(通常是"one"端)对应多个实体实例("many"端)。在数据库中,...

    hibernate最新版jar包(全)

    10. **多对一(One-to-Many)、一对多(Many-to-One)、一对一(One-to-One)、多对多(Many-to-Many)关系**: Hibernate支持这四种数据库关联关系,通过不同的注解配置来实现。 **使用Hibernate的步骤** 1. **...

    Hibernate cascade (级联).doc

    <many-to-one name="address" class="com.fendou.domain.Address" cascade="all"/> ``` 2. **none**:表示在所有情况下都不执行级联操作。这是默认的行为,意味着当你对一个实体进行操作时,不会影响到与之关联的...

    hibernate_6映射关系之one2many.zip_hibernate

    在Java的持久化框架Hibernate中,`One-to-Many`映射关系是对象关系映射(ORM)中常见的一种关联类型。它表示一个实体("One"端)与多个其他实体("Many"端)之间的关系。例如,一个学生可以有多个课程,一个老师可以...

    Hibernate之第3解之-hibernate_hibernate_many2one_1

    《深入理解Hibernate:第三解——Many-to-One关系映射实战》 在Java世界里,ORM(Object-Relational Mapping)框架的出现极大地简化了数据库与Java对象之间的交互,而Hibernate作为其中的佼佼者,更是备受开发者青睐...

    hiberante - one to many - update

    标题中的“Hibernate - one to many - update”指向的是一个关于Hibernate框架中的一对多关联关系在更新操作时的专题。Hibernate是Java开发中常用的持久化框架,它简化了数据库操作,使得开发者可以更加关注业务逻辑...

    hibernate 全面学习->hibernate 关联映射学习

    本篇文章将全面探讨Hibernate的关联映射学习,包括一对一(One-to-One)、一对多(One-to-Many)、多对一(Many-to-One)以及多对多(Many-to-Many)四种关系映射。 首先,一对一关联映射(One-to-One)是两个实体...

Global site tag (gtag.js) - Google Analytics