基于连接表的单向一对多关联 应该优先被采用。请注意,通过指定unique="true",我们可以把多样性从多对多改变为一对多。
person.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.lixueli.business.model.Person" table="person">
<id name="id" column="PERSON_ID">
<generator class="native"></generator>
</id>
<property name="age"></property>
<property name="firstName"></property>
<property name="lastName"></property>
<set name="events" table="PERSON_EVENT" lazy="false">
<key column="PERSON_ID"></key>
<many-to-many column="EVENT_ID" class="com.lixueli.business.model.Event" unique="true"></many-to-many>
</set>
</class>
</hibernate-mapping>
Event.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.lixueli.business.model.Event" table="event">
<id name="id" column="EVENT_ID">
<generator class="native" />
</id>
<property name="date" type="timestamp" column="EVENT_DATE"/>
<property name="title" />
</class>
</hibernate-mapping>
这样便实现单向一对多关联:一个person可以对应多个Event,但一个Event只能对应一个Person.
- 大小: 11.6 KB
分享到:
相关推荐
配置上,需要创建连接表实体并使用 `many-to-one` 元素。 8. Hibernate 多对多单向关联: 多对多关联通常通过连接表实现,但单向关联意味着只有一方(如 Course)知道这个关联,另一方(如 Student)不知情。...
关联映射主要包括四种类型:一对一(One-to-One)、一对多(One-to-Many)、多对一(Many-to-One)和多对多(Many-to-Many)。下面我们将逐一探讨这些关联映射的配置方法。 1. **一对一关联映射** - **主键关联**...
2. **一对多关联**(One-to-Many / Many-to-One) - 外键单向关联 - 连接表单向关联 - 外键双向关联 - 连接表双向关联 3. **多对多关联**(Many-to-Many) - 单向关联 - 双向关联 每种关联类型都有其特定的...
- `many-to-one`关联可以用来表达多种类型的关系,包括一对一、一对多和多对一。 - 双向`many-to-one`关联的例子,比如麻将桌上的玩家位置与玩家之间的关系。 #### 三、`one-to-one`关联管理 `one-to-one`关联...
以下是关于Hibernate XML配置映射的一些详细说明,主要关注一对一、一对多、多对一以及多对多的单向关联。 ### 2.1 单向关联 #### 2.1.1 一对一外键单向关联 这种关联意味着在一个实体中有一个字段引用另一个实体...
**一对多关联(One-to-Many)** 在一对多关联中,一个实体可以与多个其他实体相关联,比如一个部门有多名员工。这种关联可以通过`@OneToMany`注解来建立。关联的配置可以是集合类型,如List、Set等。为了优化性能,...
在一对多外键单向关联中,一个实体(父实体)与多个实体(子实体)相关联,这种关联通过在子实体中添加一个指向父实体的外键来实现。 **表结构示例**: - **Department表**: - `departmentid`: 主键 - `...
在这个“hibernate实例(一对多,多对一)”的主题中,我们将深入探讨两种重要的关联关系:一对一(One-to-One)和一对多(One-to-Many)。 **一对一关联(One-to-One)** 在一对一关联中,一个实体与另一个实体之间...
如果是通过连接表实现1-N关联,我们需要使用`<many-to-many>`标签,并设置`unique=true`来限制一对多的关系。连接表的配置需要在`<set>`标签中指定`table`属性。 **优点**:1端可以方便地管理和操作N端的所有对象...
3. **多对多关联(Many-to-Many)**:多对多关联需要一个中间表来存储双方的关联信息,可以使用`@ManyToMany`注解,同时通过`@JoinTable`定义连接表的详细信息,包括连接字段和关联实体的引用。多对多关联的集合通常...
- **7.5.1 一对多 (one to many)/多对一 (many to one)**:说明使用连接表的双向一对多/多对一关联映射。 - **7.5.2 一对一 (one to one)**:介绍使用连接表的双向一对一关联映射。 - **7.5.3 多对多 (many-to-...
- 不再需要使用 `<join>` 标签,而是直接使用 `<one-to-one>` 或 `<many-to-one>` 标签进行关联映射。 #### 三、Hibernate一对一外键单向关联 一对一外键单向关联是指两个表之间通过外键字段来进行关联,这种关联...
在Person类中添加`private Address address`属性,并在`person.hbm.xml`中配置`<many-to-one>`元素,如`<many-to-one name="address" cascade="all" class="Address" column="address_id"/>`。这表示Person表中的...
本文将深入探讨Hibernate中的三种主要映射关系:一对一(One-to-One)、一对多(One-to-Many)以及多对多(Many-to-Many)。 ### 一对一映射(One-to-One) 一对一映射在现实世界中非常常见,例如一个人只有一个...
对于无连接表的N-1关联,我们可以在实体类的`Person`中添加`Address`对象,并在配置文件中设置`<many-to-one>`标签,指定外键列。而有连接表的N-1关联则需要使用`<join>`元素,通过连接表来建立关联。 B. 单向1-1...
<many-to-one name="address" class="Address" column="address_id"/> ``` - **基于PK**:同样只有一方包含了另一方的引用关联实体属性,但这里通过使用外键作为主键的一部分来实现。 - **映射示例**: ```xml ...
- 单向一对多:只有“一”端知道“多”端,多端没有反向引用。@OneToMany注解用在“一”端,无需在“多”端配置。 3. 多对一(Many-to-One)映射: 这实际上是一对多关系的反向视角,一个“多”的实体指向一个...
- 避免单向一对多,使用双向一对多。 - 灵活运用单向一对多。 - 使用多对一代替一对一。 - 配置对象缓存,避免集合缓存。 - 选择合适的集合类型,如Bag(无序)和Set(唯一)。 - 使用显式多态处理继承关系。 - 减少...