没有合适的资源?快使用搜索试试~ 我知道了~
Hibernate关联关系映射目录
需积分: 9 7 下载量 115 浏览量
2011-06-04
15:15:19
上传
评论
收藏 528KB DOC 举报
温馨提示
试读
30页
Hibernate关联关系映射 单向关联 │ ├─ 一对一外键单向关联 │ ├─ 一对一主键单向关联 │ ├─ 一对一连接表单向关联 │ ├─ 一对多外键单向关联 │ ├─ 一对多连接表单向关联 │ ├─ 多对一外键单向关联 │ ├─ 多对一连接表单向关联 │ └─ 多对多单向关联 └─双向关联 ├─ 一对一外键双向关联 ├─ 一对一主键双向关联 ├─ 一对一连接表双向关联 ├─ 一对多外键双向关联 ├─ 一对多连接表双向关联 └─ 多对多双向关联
资源推荐
资源详情
资源评论
1.Hibernate 关联关系映射目录
│
├─单向关联
│ ├─ 一对一外键单向关联
│ ├─ 一对一主键单向关联
│ ├─ 一对一连接表单向关联
│ ├─ 一对多外键单向关联
│ ├─ 一对多连接表单向关联
│ ├─ 多对一外键单向关联
│ ├─ 多对一连接表单向关联
│ └─ 多对多单向关联
└─双向关联
├─ 一对一外键双向关联
├─ 一对一主键双向关联
├─ 一对一连接表双向关联
├─ 一对多外键双向关联
├─ 一对多连接表双向关联
└─ 多对多双向关联
4.1 一对一外键单向关联
模型一个人(Person)对应一个地址(address)
实体:
public class Person {
private int personid;
private String name;
private int age;
private Address address;
}
public class Address {
private int addressid;
private String addressdetail;
}
表模型
address
+----------------+----------------+------+------+----------+-------------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+----------------+------+------+----------+-------------------+
| addressid | int(11) | NO | PRI | NULL | auto_increment |
| addressdetail | varchar(255) | YES | | NULL | |
+----------------+-------------- +-------+------+-----------+------------------+
person;
+-----------+------------------+------+------+---------+------------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-----------------+-------+------+---------+-------------------+
| personid | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| addressId | int(11) | YES | UNI | NULL | |
+----------- +--------------+------+-----+---------+----------------------+
映射方法:
在 Person 中添加 Address 属性,映射配置为:
<many-to-one name="address" column="addressId" unique="true"/>
<hibernate-mapping>
<class name="com.lavasoft.Address" table="ADDRESS">
<id name="addressid">
<generator class="identity"/>
</id>
<property name="addressdetail"/>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="com.lavasoft.Person" table="PERSON">
<id name="personid">
<generator class="identity"/>
</id>
<property name="name"/>
<property name="age"/>
<!--用来映射关联 PO column 是 Address 在该表中的外键列名,增加 unique 变成“1-1”-->
<many-to-one name="address" column="addressId" unique="true"/>
</class>
</hibernate-mapping>
4.2 一对一主键单向关联
1-1 的关联可以基于主键关联,但基于主键关联的持久化类不能拥有自己的主键生成策略,它
的主键由关联类负责生成。另外,增加 one-to-one 元素来关联属性,必须为 one-to-one 元素
增加 constrained="true"属性,表明该类主键由关联类生成。
模型: 一个人(Person)对应一个地址(Address)
实体:
表模型
address
+----------------+----------------+------+------+----------+-------------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+----------------+------+------+----------+-------------------+
| addressid | int(11) | NO | PRI | NULL | auto_increment |
| addressdetail | varchar(255) | YES | | NULL | |
+----------------+-------------- +-------+------+-----------+------------------+
person;
+------------+----------------+------+------+---------+------------------+
| Field | Type | Null | Key | Default | Extra |
+------------ +---------------+-------+------+---------+-------------------+
| personid | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| addressId | int(11) | YES | UNI | NULL | |
+------------ +--------------+------+-----+---------+----------------------+
public class Person {
private int personid;
private String name;
private int age;
private Address address;
}
public class Address {
private int addressid;
private String addressdetail;
}
映射方法:在 Person 中配置 id 生成策略为:
<id name="personid">
<!--基于主键关联时,主键生成策略是 foreign,表明根据关联类生成主键-->
<generator class="foreign">
<!--关联持久化类的属性名-->
<param name="property">address</param>
</generator>
</id>
......
<!--用于映射 1-1 关联-->
<one-to-one name="address" constrained="true"/>
<hibernate-mapping>
<class name="com.lavasoft.Person" table="PERSON">
<id name="personid" column="presonid">
<!--基于主键关联时,主键生成策略是 foreign,表明根据关联类生成主键-->
<generator class="foreign">
<!--关联持久化类的属性名-->
<param name="property">address</param>
</generator>
</id>
<property name="name"/>
<property name="age"/>
<!--用于映射 1-1 关联-->
<one-to-one name="address" constrained="true"/>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="com.lavasoft.Address" table="ADDRESS">
<id name="addressid">
<generator class="identity"/>
</id>
<property name="addressdetail"/>
</class>
</hibernate-mapping>
4.3 一对一连接表单向关联
这种情况很少见,但 Hibernate 同样允许采用连接表关联 1-1.有连接表的 1-1 同样只需要将 N-1
的 many-to-one 元素增加 unique="true"属性即可。
表结构
address;
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| addressid | int(11) | NO | PRI | NULL | auto_increment |
| addressdetail | varchar(255) | YES | | NULL | |
+---------------+--------------+------+-----+---------+----------------+
join;
+--------------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+---------+------+-----+---------+-------+
| personid | int(11) | NO | PRI | | |
| address11tab | int(11) | YES | UNI | NULL | |
+--------------+---------+------+-----+---------+-------+
person;
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| personid | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
+----------+--------------+------+-----+---------+----------------+
映射方法:在 Person 中添加 Address 属性,映射配置为:
<!--使用 join 元素显式确定链接表-->
public class Person {
private int personid;
private String name;
private int age;
private Address address;
}
public class Address {
private int addressid;
private String addressdetail;
}
剩余29页未读,继续阅读
资源评论
ganwenli
- 粉丝: 2
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- scr ubuntu上传
- STM32单片机FPGA毕设电路原理论文报告液晶显示模块与8031单片机的接口电路及编程
- STM32单片机FPGA毕设电路原理论文报告液晶航向指示器接口电路设计
- Pytorch深度学习入门与实战2024
- STM32单片机FPGA毕设电路原理论文报告野战救护车手术台稳定液压系统及其自动控制
- STM32单片机FPGA毕设电路原理论文报告压延机卷取调速装置改造
- STM32单片机FPGA毕设电路原理论文报告形状记忆合金驱动的微电脑密码锁的设计
- HTML小游戏27 - Chuck Chicken 魔法蛋网页游戏源码
- 不同酒度质量分数数据表
- STM32单片机FPGA毕设电路原理论文报告新一代单片机实验教学系统研究与开发
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功