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

Hibernate的cascade总结

阅读更多

1.JPA中的CascadeType.ALL并不等于{CascadeType.PESIST,CascadeType.REMOVE,CascadeType.MERGE,CascadeType.REFRESH}

 

在Hibernate中调用session.save() or session.update()并不能触发 {CascadeType.PESIST,CascadeType.REMOVE,CascadeType.MERGE,CascadeType.REFRESH} 的级联操作,而能触发CascadeType.ALL的级联。如不希望用CascadeType.ALL,需要使用Hibernate自身对 cascade的注解 @Cascade(value=org.hibernate.annotations.CascadeType.SAVE_UPDATE)

 

2.共享主键的OneToOne方式不能通过cascade来自动生成标识符 ,即使声明了@GenericGenerator(name="foreign_key",strategy="foreign",parameters={@Parameter(name="property",value="person")})

 
@Entity
public class Person implements Serializable {
        @Id
	@GeneratedValue(generator = "g_id")
	public String getId() {
		return id;
	}
	
         @OneToOne(cascade = { CascadeType.PERSIST ,CascadeType.ALL})
         @JoinColumn(name = "profile_id")
	 @PrimaryKeyJoinColumn(name="id")
	public Profile getProfile() {
		return profile;
	}
}

@Entity
public class Profile implements Serializable {

        @Id
	@GenericGenerator(name = "foreign_key", strategy = "foreign", parameters = { @Parameter(name = "property", value = "person") })
	@GeneratedValue(generator = "foreign_key")
	public String getId() {
		return id;
	}

        @OneToOne(mappedBy = "profile")
	public Person getPerson() {
		return person;
	}

	public void setPerson(Person person) {
		this.person = person;
	}
}
 

 

3.delete-orphan只应用在OneToMany中,能级联删除Many集合中的子元素。

   NOTE:JPA并不支持delete-orphan,但并不明白hibernate reference中为什么可以在OneToMany中添加属性orphanRemoval=true的属性。事实上,要用hibernate独有的注解 @Cascade(value=@CascadeType.DELETE_ORPHAN)来达到此目的

分享到:
评论

相关推荐

    Hibernate cascade (级联).doc

    ### Hibernate级联(Cascade)详解 #### 一、概述 Hibernate 是一款强大的对象关系映射 (ORM) 框架,它允许开发人员将 Java 对象模型映射到数据库表,从而极大地简化了数据访问层的开发工作。在 Hibernate 中,...

    Hibernate cascade在不同关联关系中的具体表现

    总结来说,Hibernate的cascade属性是提高开发效率和保证数据一致性的重要工具,但需要根据实际业务场景选择合适的cascade类型,以免引发不必要的副作用。通过深入理解这些细节,我们可以更好地利用Hibernate优化...

    hibernate_配置cascade_及all-delete-orphan.doc

    ### Hibernate中的Cascade选项详解 #### 一、概述 在Hibernate框架中,cascade选项提供了一种管理实体间关联的便捷方式,使得对一个实体的操作能够自动地应用到与之相关的其他实体上。这对于处理复杂的数据库关系...

    hibernate 级联(cascade和inverse)一对多

    总结,Hibernate的级联和反转特性对于一对多关系的管理至关重要,它们可以简化开发过程,提高数据操作的效率。通过合理配置,可以确保对象关系的正确同步,并利用JUnit进行测试以确保功能的正确性。在实践中,应根据...

    hibernate inverse和cascade的详细讲解

    ### Hibernate Inverse 和 Cascade 的详细讲解 #### 一、引言 在ORM(Object-Relational Mapping)领域,Hibernate作为一款流行的Java持久层框架,它提供了丰富的API和配置选项来帮助开发者实现对象与数据库表之间...

    Hibernate中cascade与inverse属性详解

    在 Hibernate 框架中,`cascade` 和 `inverse` 是两个非常重要的属性,它们用于管理对象之间的关联关系。在深入讲解这两个属性之前,我们首先需要理解 Hibernate 中的一些基本概念,如 one-to-many 和 many-to-one ...

    hibernate关联关系总结

    在Hibernate中,可以通过@OneToOne注解来定义这种关系,可以指定fetch属性来控制加载策略,并通过cascade属性设置级联操作。同时,可以使用@PrimaryKeyJoinColumn注解来指定主键的关联。 2. **一对多关联...

    Hibernate_级联关系说明_-_关于cascade和inverse的用法

    在探讨Hibernate框架中的级联操作(cascade)与控制权反转(inverse)之前,我们需要先对Hibernate有一个基本的理解。Hibernate是一个开放源代码的对象关系映射(ORM)框架,它为Java应用提供了一种将对象模型映射到...

    Hibernate总结(三)

    《Hibernate总结(三)》 在本篇关于Hibernate的总结中,我们将深入探讨这个流行的Java对象关系映射(ORM)框架的关键概念和技术细节。Hibernate作为一款强大的工具,它极大地简化了Java开发人员处理数据库操作的工作...

    hibernate总结练习源码

    本资源包含的"hibernate总结练习源码"提供了对Hibernate ORM框架实际应用的实例,有助于深入理解和掌握其核心概念与功能。 1. **对象关系映射(ORM)**:Hibernate 提供了一种机制,将数据库中的表映射为Java类,表...

    hibernate集合映射inverse和cascade详解.txt

    在深入探讨Hibernate集合映射中的`inverse`与`cascade`属性之前,我们首先需要理解Hibernate框架的基本概念。Hibernate是一个开放源代码的对象关系映射(ORM)框架,它为Java应用程序提供了一种将对象模型与数据库...

    hibernate

    根据提供的文件信息,我们可以深入探讨Hibernate框架中的几个关键概念,特别是`fetch`, `lazy`, `cascade`, 和 `inverse`关键字的使用与理解。这四个概念在处理对象关系映射(ORM)时非常重要,尤其是在Java环境下...

    Hibernate总结——课程管理

    @ManyToMany(cascade = CascadeType.ALL) @JoinTable(name = "student_course", joinColumns = @JoinColumn(name = "course_id"), inverseJoinColumns = @JoinColumn(name = "student_id")) private List...

    Hibernate学习总结

    ### Hibernate学习总结 #### 一、Hibernate简介 Hibernate是一个开源的对象关系映射(ORM)框架,用于Java应用程序与数据库进行交互。它允许开发人员以面向对象的方式来操作数据库,从而简化了数据访问层的开发工作...

    Hibernate个人总结

    ### Hibernate个人总结 #### 一、理解Hibernate的关系映射 在使用Hibernate进行对象关系映射时,我们需要将实体类与数据库表之间的关系映射清楚。本文档将通过一个简单的例子来展示如何处理一对多(One-to-Many)...

Global site tag (gtag.js) - Google Analytics