常用的是共享主键策略来完成一对一关系的映射
User类的映射文件User.hbm.xml
<hibernate-mapping package="alan.hbn.rel.o2o">
<class name="User" table="user_o2o_pk">
<id name="userId" column="userid">
<generator class="identity"/>
<!--标明主键采取自增列方式生成-->
</id>
<property name="userName" column="username"/>
<one-to-one name="address" class="Address" cascade="all"/>
<!--
标明一对一的关系在本类中的另一类的属性和类型,以及级连操作的范围
name属性标明User类中的Address类的对象名,class标明其类型
-->
</class>
</hibernate-mapping>
Address类的映射文件Address.hbm.xml
<hibernate-mapping package="alan.hbn.rel.o2o">
<class name="Address" table="address_o2o_pk">
<id name="addressId" column="addressid">
<generator class="foreign">
<!--标明主键采用共享主键策略-->
<param name="property">user</param>
<!--标明是引用自那个关联类的主键-->
</generator>
</id>
<property name="street" column="street"/>
<property name="zipcode" column="zipcode"/>
<one-to-one name="user" class="User" constrained="true"/>
<!--
标明一对一的关系在本类中的另一类的属性和类型,以及级连操作的范围
name属性标明Address类中的User类的对象名,class标明其类型,
constrained的属性关联是采取外键引用并作为主键,在采取共享主键时,
<generator class="foreign">和<one-to-one ....constrained="true">
是同时存在的
-->
</class>
</hibernate-mapping>
外键策略来完成一对一关系的映射
User类的映射文件User.hbm.xml
<hibernate-mapping package="alan.hbn.rel.o2o">
<class name="User" table="user_o2o_pk">
<id name="userId" column="userid">
<generator class="identity"/>
<!--标明主键采取自增列方式生成-->
</id>
<property name="userName" column="username"/>
<one-to-one name="address" class="Address" cascade="all"/>
<!--
标明一对一的关系在本类中的另一类的属性和类型,以及级连操作的范围
name属性标明User类中的Address类的对象名,class标明其类型
-->
</class>
</hibernate-mapping>
Address类的映射文件Address.hbm.xml
<hibernate-mapping package="alan.hbn.rel.o2o">
<class name="Address" table="address_o2o_pk">
<id name="addressId" column="addressid">
<generator class=" identity "/>
<!--标明主键采用自增列策略-->
</id>
<property name="street" column="street"/>
<property name="zipcode" column="zipcode"/>
<many-to-one name="user"
class="User"
column="userid"
cascade="all"
unique="true"/>
<!--
这里的<many-to-one>是做外键引用策略使用的并不是Address和User类是个一对多的关系,但是可以通过这对这种一对多关系加上特殊的约束来表示一对一的关系,也就是每一个User类的对象制等对应一个Address类的对象,就可以在表里对User和Address一对多关系的外键上作文章,当一个User类对象对应多个Address类对象的时候,address表中的对应user表中的外键就有多条是相同的,只要强制这个外键是唯一的就可以达到一对一关系的目标了
-->
</class>
</hibernate-mapping>
分享到:
相关推荐
**5.3 Hibernate知识辅导(2--2)** - **多对多映射**: 多对多关系的实现方式。 - **级联操作**: 级联保存、删除等操作。 - **延迟加载**: 延迟加载实体及其关联对象。 **5.4 Hibernate知识辅导(2--3)** - **...
2. **Hibernate框架**: Hibernate是一个对象关系映射(ORM)工具,它简化了Java应用与关系数据库之间的交互。在博客系统中,Hibernate作为数据访问层,负责将Java对象与数据库中的表进行映射,提供透明的数据持久...
根据给定的文件信息,我们可以提炼出一系列与Java程序设计相关的知识点,这48讲加上额外的2讲辅导课程,涵盖了Java编程的基础到高级技术,是深入理解和掌握Java语言的宝贵资源。以下是对这些知识点的详细说明: ###...
- JPA/Hibernate:理解ORM框架的工作原理,以及实体关系映射和查询语句的编写。 10. **心理辅导**: - 面试准备:了解如何有效地准备面试,包括对公司和职位的研究,以及自我介绍的技巧。 - 面试技巧:学会如何...
知识点2:SSM 框架 * SSM 框架是 Spring、Struts 和 Hibernate 的整合框架,能够提供一个完整的 Java WEB 开发解决方案。 * SSM 框架提供了一个松耦合的架构,能够使开发者快速构建应用程序。 * SSM 框架的主要特点...
2. **数据库设计**:文件"2-数据库表结构文档"很可能包含了项目的数据库模型,包括各个表的设计、字段定义以及它们之间的关系。这通常涉及到关系型数据库管理系统(如MySQL或Oracle),并且可能运用了实体关系模型...
“3-资料”可能包含相关的学习资料,例如Java编程基础、Spring Boot教程、数据库管理知识等,帮助用户深入理解系统原理,提升开发技能。 六、辅导视频 “5-视频”中的辅导视频是系统的重要补充,通过实例演示,...
3. **JavaWeb阶段** - **JavaScript DOM编程视频教程**:JavaScript是前端开发的核心语言之一,DOM编程是其中的重要组成部分。 - **jQuery视频教程**:jQuery是一种流行的JavaScript库,简化了HTML文档遍历、事件...
2. **技术栈展示**:列出你精通的Java技术,如J2EE、JDBC、多线程、集合框架、设计模式等,并提及你对其他相关技术如Spring Boot、MyBatis、Hibernate的理解和应用。 3. **项目经验**:详细描述你参与过的项目,...
8. **辅导视频**:01-视频可能是一系列的教学视频,帮助学习者理解系统的实现过程,包括编程技巧、问题调试、功能测试等内容,有助于深化理论知识和实践能力。 9. **版本控制**:项目可能使用Git进行版本控制,确保...
最后,"资料"(3-资料)可能是额外的学习资源,如Java编程指南、数据库管理教程、软件工程理论等,这些都能帮助学习者更全面地掌握相关知识。 综上所述,这个基于Java的人力资源管理系统项目不仅提供了实践经验,也...
- 数据库:MySQL或Oracle存储用户信息、作业、成绩等数据,使用JDBC进行数据库操作,可能结合Hibernate或MyBatis简化ORM(对象关系映射)。 - 前端:HTML、CSS和JavaScript,可能使用Bootstrap或Vue.js等框架提升...
该系统主要利用了Spring、Struts2和Hibernate框架来设计并实现自动化的考试座位编排功能,从而替代了传统的人工排座方式。系统的设计和实现可以有效避免人工操作中可能出现的错误,减轻教务人员的工作负担,并且提升...
《基于Java的学生宿舍管理系统》 本项目是一款基于Java技术实现的学生宿舍管理系统,旨在提供一个...通过研究和模仿,开发者不仅可以掌握Java编程,还能了解到数据库设计、系统部署以及软件工程中的其他关键知识点。
4. **框架应用**:可能使用了Spring框架进行依赖注入和事务管理,Spring MVC进行Web层的处理,还有可能使用MyBatis或Hibernate作为ORM(对象关系映射)工具,简化数据库操作。 5. **Eclipse或IntelliJ IDEA等IDE的...
这个项目的重点在于理解和应用Java编程语言来构建一个实用的业务系统,同时也涉及到数据库管理和系统部署的相关知识。 1. **Java编程基础**:Java是一种面向对象的编程语言,它的特性包括平台独立性、丰富的类库和...