Hibernate实体映射笔记
2017-09-25 15:28
344 查看
Hibernate的学习中遇到几种映射关系:多对一,一对多和多对多的三种关系配置的流程总结:
1.写注释:
格式为:?属性,表达的是本对象与?的?关系。例:<!-- department属性,本类User与Department的多对一 -->
2.拷模板
多对一:
<many-to-one name=“” class=“” column=“”/>
一对多(Set):
<set name="">
<key column=""></key>
<one-to-many class=""/>
</set>
多对多(Set):
<set name="" table="">
<key column=""></key>
<many-to-many class="" column=""/>
</set>
3. 填空
name属性:属性名(注释中的第1问号)
class属性:关联的实体类型(注释中的第2个问号)
column属性:
<many-to-one column="..">:一般可以写成属性名加Id后缀,如属性为department,则column值写成departmentId。
一对多中的<key column="..">:从关联的对方(对方是多对一)映射中把column值拷贝过来。
多对多中的<key column=“..”>:一般可以写成本对象的名加Id后缀,如本对象名为User,则写为userId。
多对多中的<many-to-many column=“..”>:一般可以写为关联对象的名称加Id后缀。
4 完成
这里举例说明:
<!-- department属性,本类User与Department的多对一 -->
<many-to-one name="department" class ="Department" column="departmentId"></many-to-one>
<!-- users属性,本类Department与User的一对多的 -->
<set name="users" >
<key column="departmentId"></key>
<one-to-many class="User"/>
</set>
这里的column = “departmentId” ,我的理解:不管是多对一和一对多,只要把少的的那方当成外键,如User和Department的关系中department属于少的,就把department加上id当成外键。
多对多的例子:
<!-- users属性。本类Role与User的多对多 -->
<set name="users" table="user_role">
<key column="roleId"></key>
<many-to-many class="User" column="userId"></many-to-many>
</set>
这里的key column="roleId" 就是本类Role后加上Id,然后拷贝到<!-- roles的属性,本类User与Role的多对多 -->中的
<many-to-many class="Role" column="roleId"></many-to-many>中的column属性值
table属性值可任意定义,但是要与后面<!-- ro
4000
les的属性,本类User与Role的多对多 -->中table值一致。
<!-- roles的属性,本类User与Role的多对多 -->
<set name="roles" table="user_role">
<key column="userId"></key>
<many-to-many class="Role" column="roleId"></many-to-many>
</set>
这里的key column="userId" 就是本类User后加上Id,然后拷贝到<!-- users属性。本类Role与User的多对多 -->中的
<many-to-many class="User" column="userId"></many-to-many>中的column属性值
1.写注释:
格式为:?属性,表达的是本对象与?的?关系。例:<!-- department属性,本类User与Department的多对一 -->
2.拷模板
多对一:
<many-to-one name=“” class=“” column=“”/>
一对多(Set):
<set name="">
<key column=""></key>
<one-to-many class=""/>
</set>
多对多(Set):
<set name="" table="">
<key column=""></key>
<many-to-many class="" column=""/>
</set>
3. 填空
name属性:属性名(注释中的第1问号)
class属性:关联的实体类型(注释中的第2个问号)
column属性:
<many-to-one column="..">:一般可以写成属性名加Id后缀,如属性为department,则column值写成departmentId。
一对多中的<key column="..">:从关联的对方(对方是多对一)映射中把column值拷贝过来。
多对多中的<key column=“..”>:一般可以写成本对象的名加Id后缀,如本对象名为User,则写为userId。
多对多中的<many-to-many column=“..”>:一般可以写为关联对象的名称加Id后缀。
4 完成
这里举例说明:
<!-- department属性,本类User与Department的多对一 -->
<many-to-one name="department" class ="Department" column="departmentId"></many-to-one>
<!-- users属性,本类Department与User的一对多的 -->
<set name="users" >
<key column="departmentId"></key>
<one-to-many class="User"/>
</set>
这里的column = “departmentId” ,我的理解:不管是多对一和一对多,只要把少的的那方当成外键,如User和Department的关系中department属于少的,就把department加上id当成外键。
多对多的例子:
<!-- users属性。本类Role与User的多对多 -->
<set name="users" table="user_role">
<key column="roleId"></key>
<many-to-many class="User" column="userId"></many-to-many>
</set>
这里的key column="roleId" 就是本类Role后加上Id,然后拷贝到<!-- roles的属性,本类User与Role的多对多 -->中的
<many-to-many class="Role" column="roleId"></many-to-many>中的column属性值
table属性值可任意定义,但是要与后面<!-- ro
4000
les的属性,本类User与Role的多对多 -->中table值一致。
<!-- roles的属性,本类User与Role的多对多 -->
<set name="roles" table="user_role">
<key column="userId"></key>
<many-to-many class="Role" column="roleId"></many-to-many>
</set>
这里的key column="userId" 就是本类User后加上Id,然后拷贝到<!-- users属性。本类Role与User的多对多 -->中的
<many-to-many class="User" column="userId"></many-to-many>中的column属性值
相关文章推荐
- Hibernate实体映射笔记
- Hibernate实体映射笔记
- hibernate 实体关系映射笔记
- Hibernate实体映射笔记
- Hibernate笔记之2实体映射细粒度划分
- Hibernate 学习笔记(二)-- 实体映射
- Hibernate实体映射笔记
- Hibernate实体映射笔记
- Hibernate实体映射笔记
- JavaPersistenceWithHibernate第二版笔记-第四章-Mapping persistent classes-003映射实体时的可选操作(<delimited-identifiers/>、PhysicalNamingStrategy、PhysicalNamingStrategyStandardImpl、、、)
- hibernate 6 映射集合和实体关联 | hibernate 实战(第二版) 第6章映射集合和实体关联 | 笔记
- hibernate 实体关系映射笔记
- Hibernate实体映射笔记
- Hibernate实体映射笔记
- Hibernate实体映射笔记
- Hibernate实体映射笔记
- Hibernate 3.2 学习笔记 映射实体关联关系
- Hibernate实体映射笔记
- Hibernate实体映射笔记
- hibernate 实体关系映射笔记(转载自51)