`
yzzh9
  • 浏览: 18578 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

多对一关联映射(单向关联)见项目:me_many_to_one

阅读更多

1.
模型
多个用户(user)对应一个组(group)
2.
实体类(省略set,get方法)

public class User {
private int id;
private String name;
private Group group;
}
public class Group {
private int id;
private String name;
}

 3.
数据模型
mysql> desc t_user;
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| relatedGroup | int(11) | YES | MUL | NULL | |
+--------------+--------------+------+-----+---------+----------------+
mysql> desc t_group;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+
4.
映射文件
<many-to-one>标签会在“多”的一端添加一个外键,指向“一”的一端,这个外键是由<many-to-one>标签中的column属性定义的。
<many-to-one>标签的定义实例:
<many-to-one name="group" column="relatedGroup" />
可以指定class属性,如果不指定Hibernate会自动找其关联的实体类。如User实体中有Group属性值group,所以Hibernate可以知道User实体相关联的实体类
为Group。且<many-to-one>中的name值需和实体类中的关联属性相同,才能够通过反射找到相应的关联实体类。
User.hbm.xml:

<hibernate-mapping>
<class name="com.dvnchina.hibernate.User" table="t_user">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<many-to-one name="group" column="relatedGroup" />
</class>
</hibernate-mapping>

 

Group.hbm.xml:

<hibernate-mapping>
<class name="com.dvnchina.hibernate.Group" table="t_group">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
</class>
</hibernate-mapping>

 
5.
测试

public class TestManyToOne extends TestCase {
public void testSave(){
Session session = HibernateUtils.getSession();
Transaction tx = session.beginTransaction();
Group group = new Group();
group.setName("凤山人在线");
User user1 = new User();
User user2 = new User();
user1.setName("yang9");
user1.setGroup(group);
user2.setName("long9");
user2.setGroup(group);
//session.save(group);
//当group没有save,即为Transient对象,将抛出TransientObjectException
//因为持久对象不能直接引用瞬时对象,所以我们需要先save(group)使其为持久对象后
//再引用
session.save(user1);
session.save(user2);
tx.commit();
HibernateUtils.closeSession(session);
}
public void testCascade(){
Session session = HibernateUtils.getSession();
Transaction tx = session.beginTransaction();
Group group = new Group();
group.setName("天峨人在线");
User user1 = new User();
User user2 = new User();
user1.setName("yang999");
user1.setGroup(group);
user2.setName("long999");
user2.setGroup(group);
//在user.hbm.xml中的many-to-one中设置级联设置cascade="all",此时不需要使group
//为持久对象而可以直接使用它,因为save(user1oruser2)时将级联保存group
session.save(user1);
session.save(user2);
tx.commit();
HibernateUtils.closeSession(session);
}
//级联是对象之间的连锁操作(只对增删改起作用,对load不起作用,load是由many-to-one维护的)
public void testLoad(){
Session session = HibernateUtils.getSession();
Transaction tx = session.beginTransaction();
User user = (User)session.load(User.class, 3);
System.out.println(user.getName()+","+user.getGroup().getName());
tx.commit();
HibernateUtils.closeSession(session);
}
}

 

分享到:
评论

相关推荐

    Hibernate关联映射-one to one单向外键关联

    本话题主要探讨的是Hibernate中的一种关联映射方式——一对一(One-to-One)单向外键关联。这种关联模式通常用于两个实体之间存在唯一对应的关系,例如一个用户对应一个唯一的账户。 在Hibernate中,一对一关联可以...

    Hibernate一对一主键关联映射(单向关联)

    在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是常见的关系映射方式之一,尤其在处理两个实体之间存在唯一对应关系时非常有用。本篇将重点讲解如何实现一对一主键关联映射的单向关联,并通过一个...

    Hibernate教程04_关系映射之一对一单向外键关联

    在数据库中,外键用于在两个表之间建立关联,而在单向一对一关联中,通常只在一个实体类中声明对另一个实体的引用,而另一个实体类并不知晓这个关联。 **详细知识点:** 1. **实体类与表的映射**:在Hibernate中,...

    hibernate 单向多对多关联映射练习

    本练习主要关注的是Hibernate中的单向多对多关联映射,这是一种常见的关系数据库设计模式,用于表示两个实体间复杂的关系。 在多对多关联中,两个实体类可以相互拥有多个实例,但只在一个方向上建立关联。例如,...

    MyBatis的一对一关联映射

    在实际的项目开发中,数据库中的表与表之间经常存在各种关联关系,比如一对一(One-to-One)、一对多(One-to-Many)和多对多(Many-to-Many)关系。本篇文章将重点讲解如何在 MyBatis 中实现一对一的关联映射。 一...

    Hibernate教程10_关系映射之多对一单向关联

    压缩包中的`s2sh_relation07_many2one_uni`可能是示例项目的名称,暗示这是一个基于Spring、Struts2和Hibernate(S2SH)的项目,其中包含了多对一单向关联的实例代码。你可以下载并运行这个项目,以便更直观地理解...

    MyBatis框架的学习(五)——一对一关联映射和一对多关联映射

    在本篇关于MyBatis框架的学习中,我们将深入探讨一对一关联映射和一对多关联映射的概念、配置以及在实际开发中的应用。MyBatis是一个优秀的持久层框架,它允许开发者将SQL语句直接写在XML配置文件或者注解中,从而...

    Many-to-one关联映射

    关联映射的本质: 将关联关系映射到数据库,所谓的...&lt;many-to-one&gt;会在多的一端加入一个外键,指向一的一端,这个外键是由&lt;many-to-one&gt; 中的column属性定义的,如果忽略了这个属性那么默认的外键与实体的属性一致

    hibernate多对多关联映射

    在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系数据库模型映射方式,用于处理两个实体之间存在多个实例互相关联的情况。本文将深入探讨Hibernate如何实现多对多关联映射,并通过实际例子解析相关...

    hibernate多对多关联映射(单项关联)

    通过`hibernate_many2many_1`这个文件名推测,压缩包可能包含了示例代码或者配置文件,这些内容可以帮助读者更直观地理解多对多单向关联的实现过程。具体来说,可能包含如下内容: 1. `pom.xml`:Maven项目的配置...

    Hibernate学习:单向多对一关联 工程

    本项目“Hibernate学习:单向多对一关联 工程”专注于讲解Hibernate中的单向多对一关联映射,这是数据库设计中常见的关系类型,尤其在处理具有层次结构的数据时。 单向多对一关联指的是在一个实体类中有一个引用,...

    NHibernate One-to-Many一对多映射-xxlinux_com

    在数据库世界中,一对多(One-to-Many)关系是一种常见的关联类型,其中一个表(父表)可以与多个其他表(子表)相关联。在NHibernate中,配置这种映射关系对于理解和使用ORM至关重要。 一对多关系意味着一个实体...

    Hibernate一对一唯一外键关联映射(单向关联)

    在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是常见的关系数据库模型在对象模型中的体现。这种关联通常用于表示两个实体之间非常特殊的联系,比如一个人只有一个身份证,或者一个公司只有一个总部...

    hibernate 关联映射(一) many to one

    在数据库设计中,Many to One是一种常见的关系,即一个实体(表)可以与多个其他实体相关联,而另一个实体则只与一个实体相关联。 首先,我们需要理解Hibernate的实体类和映射文件。实体类是Java对象,它们代表...

    hibernate的关联映射

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

    Hibernate一对多单向关联映射

    本篇主要探讨的是如何在Hibernate中实现一对多的单向关联映射。 一、概念理解 一对多关联意味着一个实体(如部门)可以有多个关联实体(如员工),而反过来,每个员工只属于一个部门。单向关联则表示只有部门知道其...

    Hibernate双向一对一关联映射(注解版)

    在Hibernate中,一对一关联映射分为单向和双向。单向一对一映射通常涉及一个实体持有另一个实体的引用,而双向一对一映射则意味着两个实体都可以互相引用。这种关联关系在数据库层面通常通过主键外键约束来实现,但...

    hibernate一对多关联映射(单向关联)

    在Java的持久化框架Hibernate中,一对多关联映射是一种常见的关系映射方式,它用于表示一个实体(如用户)可以拥有多个关联实体(如订单)。在这个场景中,"一"通常代表父实体,"多"代表子实体。这篇博客文章...

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

    一、一对一(one-to-one)与一对多(one-to-many)关系 1. 一对一关系: 在现实世界中,如一个人只有一个身份证,这就是典型的"一对一"关系。在Hibernate中,可以通过@OneToOne注解实现。这种关系通常需要使用外键...

Global site tag (gtag.js) - Google Analytics