Hibernate实体关系映射:Card.hbm.xml中的主键生成与一对一映射

需积分: 9 1 下载量 105 浏览量 更新于2024-08-18 收藏 359KB PPT 举报
"映射文件Card.hbm.xml是Hibernate框架中用于定义实体类Card与数据库表t_card之间映射关系的配置文件。它包含了类名、表名、主键信息以及一对一关联关系的设置。" 在Hibernate中,映射文件是XML格式的,它允许开发者详细指定Java对象如何与数据库中的表进行对应。`Card.hbm.xml` 文件中的配置信息如下: 1、**foreign主键生成器**: 在这里,`<generator class="foreign">` 指定了主键生成策略。`foreign` 策略意味着Card实体的主键`id`不是自动生成的,而是引用了另一个对象(Citizen)的外键。`<param name="property">citizen</param>` 指定这个外键对应的是`Citizen`实体的属性。 2、**类属性**: `<class name="com.demo.model.Card" table="t_card">` 表示`Card` 类对应数据库中的 `t_card` 表。`name` 属性是Java类的全限定名,而`table` 属性是数据库中的表名。`<id name="id" column="id" type="integer">` 定义了主键字段,`name` 是Java属性名,`column` 是数据库列名,`type` 是数据类型。 3、**一对一节点**: `<one-to-one name="citizen" class="com.demo.model.Citizen" constrained="true">` 描述了Card实体与Citizen实体之间的一对一关系。`name` 是关联的属性名,`class` 是关联实体的全限定名。`constrained="true"` 表示外键约束位于`Card`表上,即`Card`表包含对`Citizen`表的外键。 4、**约束(必须为true)**: 在Hibernate中,`constrained="true"` 表示一对一关系的外键约束在当前类(Card)中,这通常意味着在`t_card` 表中存在一个引用`Citizen.id`的列。这种约束方式可以确保数据的一致性。 此外,当使用Hibernate操作对象时,由于对象可能会被缓存,因此**实现hashCode与equals方法**至关重要。这两个方法用于在哈希表中正确地比较和定位对象。`hashCode` 方法返回一个整数值,使得相同对象的哈希码相同,不同对象的哈希码尽可能不同;`equals` 方法则用于判断两个对象是否相等。在处理对象关联关系时,尤其是涉及到一对多或一对一关系时,正确的`hashCode` 和 `equals` 实现能确保集合操作(如添加、查找和删除)的正确性。如果不正确实现,可能导致集合中无法正确识别和处理对象,进而引发错误。