Hibernate 各种映射的配置文件总结
### Hibernate映射配置详解 #### 引言 Hibernate作为Java领域中最流行的ORM(对象关系映射)框架之一,为开发者提供了强大的数据持久化能力。它能够将Java对象映射到数据库表,反之亦然,从而简化了数据访问层的开发工作。本文将深入探讨Hibernate中的各种映射类型及其配置文件的编写方式,主要关注多对一单向映射、多对多双向映射以及多对多单向映射。 #### 多对一单向映射 在多对一单向映射中,一个类的对象可以关联到另一个类的单个对象。例如,在用户(User)与组(Group)的关系中,一个用户只能属于一个组,但一个组可以包含多个用户。这种关系的配置通常涉及到在“多”的一方使用`<many-to-one>`标签来指向“一”的一方。 ##### 配置示例 - **Group.hbm.xml** 文件展示了`Group`实体的基本映射,包括主键的生成策略。 ```xml <hibernate-mapping> <class name="com.dragon.hibernate.Group" table="t_group"> <id name="id"> <generator class="native"/> </id> <property name="name"/> </class> </hibernate-mapping> ``` - **User.hbm.xml** 文件中,通过`<many-to-one>`标签指明了用户与组之间的多对一关系。 ```xml <hibernate-mapping> <class name="com.dragon.hibernate.User" table="t_user"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <property name="password"/> <property name="createTime"/> <many-to-one name="group" column="groupid"/> </class> </hibernate-mapping> ``` #### 多对多双向映射 多对多双向映射涉及到两个实体之间存在相互的引用,即每个实体都可以包含另一个实体的集合。例如,用户(User)与角色(Role)之间的关系,一个用户可以拥有多个角色,而一个角色也可以被多个用户共享。 ##### 配置示例 - **User.hbm.xml** 文件中,使用`<set>`标签来维护用户与角色的集合关系。 ```xml <hibernate-mapping> <class name="com.dragon.hibernate.User" table="t_user"> ... <set name="roles" table="t_user_role"> <key column="userid"/> <many-to-many class="com.dragon.hibernate.Role" column="roleid"/> </set> </class> </hibernate-mapping> ``` - **Role.hbm.xml** 文件中,同样使用`<set>`和`<many-to-many>`来反向维护角色与用户的集合关系。 ```xml <hibernate-mapping> <class name="com.dragon.hibernate.Role" table="t_role"> ... <set name="users" table="t_user_role"> <key column="roleid"/> <many-to-many class="com.dragon.hibernate.User" column="userid"/> </set> </class> </hibernate-mapping> ``` #### 多对多单向映射 多对多单向映射只在其中一方维护关系的集合,而另一方则不参与集合的维护。这通常意味着在一个实体中定义`<set>`或`<bag>`等集合属性,而另一方实体仅通过其主键在联接表中被引用。 ##### 配置示例 - 在多对多单向映射中,假设我们只在用户(User)端维护角色(Role)的集合,则`User.hbm.xml`文件的配置与多对多双向映射相似,而`Role.hbm.xml`文件则不需要包含任何集合相关的配置。 通过上述示例,我们可以看到Hibernate提供了丰富的映射选项来处理不同的实体关系。正确理解和应用这些映射策略对于构建高效的数据访问层至关重要。
















剩余8页未读,继续阅读


- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 2023年电大计算机基础考试答案考点版基础知识.doc
- java实验策略模式观察者模式和组合模式.doc
- 大型央企项目管理标准化手册(14页表格组织图齐全).pdf
- 2023年网络工程师模拟.doc
- excel表格专题复习公开课获奖课件.pptx
- 2023年C语言笔试题C笔试题大全14附答案.doc
- java实习期工作总结.docx
- XX软件实训心得体会.doc
- WCDMA网络容量码字资源.docx
- cad极坐标是怎么输入的参考.doc
- DreamweaverCS3自带快捷键大全.doc
- C语言程序设计基本概念ppt课件.ppt
- 2022软件公司实习报告_.docx
- 操作系统课程基于网络考核方案.doc
- 2023年电大计算机论文高中计算机论文大学计算机基础论文引领式教学模式的实践与探索.doc
- PNN神经网络评价方法本科设计说明.doc


