`
学习随笔
  • 浏览: 18211 次
  • 性别: Icon_minigender_1
  • 来自: 东莞
文章分类
社区版块
存档分类
最新评论

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

阅读更多
public class User { //多

private Integer id; 
private String name;
private Group group;
}

public class Group { //一

private Integer id; 
private String name;

}


hbm.xml

user.hbm.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.model">
    <class name="User" table="user1" >
        <id name="id" column="user_id" type="java.lang.Integer">
            <generator class="native" />
        </id>
        <property name="name" length="50" type="java.lang.String" />
        <many-to-one name="group" column="group_id" ></many-to-one>

<!--级联(不建议配cascade)

<many-to-one name="group" column="group_id" cascade="save-update"></many-to-one>

-->

    </class>

</hibernate-mapping>


Group.hbm.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.model">
    <class name="Group" table="group1" >
        <id name="id" column="group_id" type="java.lang.Integer">
            <generator class="native" />
        </id>
        <property name="name" length="50" type="java.lang.String" />
    </class>

</hibernate-mapping>


操作多对一实例:

public class ManyToOneTest extends TestCase{

public void testSave1(){
   Session session = null;
   Transaction ta = null;
   User user = null;
   try{
    session = HibernateUtil.getSession();
    ta = session.beginTransaction();
    Group group = new Group();
    group.setName("php");
   
    User user1 = new User();
    user1.setName("菜10php");
    user1.setGroup(group);
   
    User user2 = new User();
    user2.setName("Z3php");
    user2.setGroup(group);
   session.save(group); //若设 cascade="all|save-update" ,则可无此行代码
    session.save(user1);
    session.save(user2);
    ta.commit();
   }catch(Exception e){
    e.printStackTrace();
    ta.rollback();
   }finally{
    //关闭session, user变为detached离线对象
    HibernateUtil.closeSession(session);
   }
  
}


public void testGet1(){
   Session session = null;
   Transaction ta = null;
   User user = null;
   try{
    session = HibernateUtil.getSession();
    ta = session.beginTransaction();
    user = (User)session.get(User.class, new Integer(3));
    System.out.println("user.name=" + user.getName());
    System.out.println("group.name=" + user.getGroup().getName());
    ta.commit();
   }catch(Exception e){
    e.printStackTrace();
    ta.rollback();
   }finally{
    //关闭session, user变为detached离线对象
    HibernateUtil.closeSession(session);
   }
  
}




===================================

元素的cascade属性表明操作是否从父对象级联到被关联的对象, 它
的取得可以是以下几种:
none:在保存,删除或修改当前对象时,不对其附属对象(关联对象)进行级联
操作。它是默认值。
save-update:在保存,更新当前对象时,级联保存,更新附属对象(临时对象,
游离对象)。
delete:在删除当前对象时,级联删除附属对象。
all:所有情况下均进行级联操作,即包含save-update和delete操作。

分享到:
评论

相关推荐

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

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

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

    在数据库设计中,Many-to-Many关系意味着两个实体之间存在多对多的关系。例如,学生可以选修多门课程,而一门课程也可以被多名学生选修。在Hibernate中,这种关系通过中间关联表(也称为连接表或联合表)来实现,该...

    Hibernate many-to-many

    "Hibernate many-to-many"指的是Hibernate中处理多对多关联关系的一种方式。多对多关系是两个实体类之间存在的一种复杂关联,比如学生和课程之间的关系,一个学生可以选修多门课程,一门课程也可以被多个学生选修。 ...

    Hibernate Many-To-Many Mapping Annotations

    在Java的持久化框架Hibernate中,Many-to-Many映射是一种常见的关系模型,它用于表示两个实体类之间多对多的关系。在这个主题中,我们将深入探讨如何使用注解来实现这种映射,以及其背后的数据库原理和实际应用。 ...

    Hibernate one-to-many-annotation

    在Java世界中,Hibernate是一个非常...总结,`Hibernate one-to-many`注解是处理实体间多对一关系的关键工具,它简化了数据库操作,提升了开发效率。正确理解和使用这些注解,对于构建高效、可维护的Java应用至关重要。

    hibernate 级联(cascade和inverse)一对多

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

    Hibernate one to many(many to one) 配置

    标题"Hibernate one to many(many to one) 配置"涉及到的是关系型数据库在Java中的持久化框架Hibernate中的两种关联映射关系:一对一(One-to-One)和多对一(Many-to-One)。在数据库设计中,这种关系很常见,例如...

    Hibernate cascade (级联).doc

    通常用于一对多或多对多的关系中,当一个实体与另一个实体解除关联时,若解除关联的对象没有其他实体关联,则会自动删除该对象。 6. **all-delete-orphan**:这个级联选项结合了 all 和 delete-orphan 的行为。它...

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

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

    Hibernate之第3解之-hibernate_hibernate_many2one_1

    Many-to-One关系是现实世界中常见的关联类型,一个实体可能对应另一个实体的多个实例,例如,一个员工可以属于一个部门,但一个部门可能有多个员工。在Hibernate中,Many-to-One关系通过配置实现,主要涉及以下几点...

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

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

    hiberante - one to many - update

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

    hibernate_many2one

    在配置`&lt;many-to-one&gt;`关系时,还可以指定级联选项,例如`cascade="save-update"`、`cascade="delete"`等,这些选项决定了在当前实体进行某些操作时,是否也对关联的实体执行相同的操作。这对于保持数据一致性非常...

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

    本教程将深入探讨Spring和Hibernate结合使用时的一对多关联映射,特别是部门与员工表的级联添加。 在数据库设计中,一对多关联是一个常见的关系类型,例如一个部门可以有多名员工,但每个员工只能属于一个部门。在...

    hibernate最新版jar包(全)

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

    Hibernate一对多(多对一)双向关联(annotation/xml)

    在Java的持久化框架Hibernate中,一对多(Many-to-One)和多对一(One-to-Many)的关系映射是数据库关系模型中的常见关联类型。本文将深入探讨这两种关联方式在使用Hibernate时的配置,包括基于注解(Annotation)和...

    hibernate的关联映射

    关联映射主要包括四种类型:一对一(One-to-One)、一对多(One-to-Many)、多对一(Many-to-One)和多对多(Many-to-Many)。下面我们将逐一探讨这些关联映射的配置方法。 1. **一对一关联映射** - **主键关联**...

    hibernate 映射-一对多双向

    4. **多对一关联(Many-to-One Association)**:在子类(被多个父项关联的一方)中,使用`@ManyToOne`注解来定义关联,表示多个实体可以与一个其他实体相关联。 5. **双向关联(Bidirectional Association)**:在...

    hibernate inverse和cascade的详细讲解

    与`inverse`不同,`cascade`属性可以应用于所有涉及到关联的元素,如`&lt;many-to-one&gt;`、`&lt;one-to-one&gt;`、`&lt;any&gt;`、`&lt;set&gt;`、`&lt;bag&gt;`、`&lt;idbag&gt;`、`&lt;list&gt;`和`&lt;array&gt;`。 - **Cascade 的作用** - **定义**:`cascade...

Global site tag (gtag.js) - Google Analytics