Hibernate的映射.docx
- 文档编号:16783116
- 上传时间:2023-07-17
- 格式:DOCX
- 页数:16
- 大小:3.68MB
Hibernate的映射.docx
《Hibernate的映射.docx》由会员分享,可在线阅读,更多相关《Hibernate的映射.docx(16页珍藏版)》请在冰点文库上搜索。
Hibernate的映射
Hibernate的映射
集合映射(Set、List、Bag、IdBag、Map)
集合映射的特点:
用一个类映射了多个表,其余表用这个类的集合属性进行映射表示。
Set映射(常用)
1、建立两个表:
users表和email表,字段如下。
在email表中,userid可不设外键(在配置文件中实现)。
2、建立一个类:
User类。
同时映射users和email两个表。
在User类中可用Set集合表示email表中的email字段,userid在映射文件中配置后由Hibernate生成。
3、映射文件。
注意
4、
保存User持久化对象时,将在users表和email表同时添加记录。
List映射
1、
建立两个表:
users和email。
与Set映射时建立的表不同的是,email表要增加一个字段,用于存放添加List元素时的先后顺序(因为List是有顺序的)。
2、建立一个类:
User类。
同时映射users和email两个表。
在User类中用List集合表示email表中的email字段,userid在映射文件中配置后由Hibernate生成。
3、映射文件。
注意中的内容。
与set映射中除了标签不同外,还要增加一行:
。
4、保存User持久化对象时,将在users表和email表同时添加记录。
Bag映射
Set映射不可重复,不记录顺序;List映射可重复,但需记录顺序。
而Bag映射可重复,且不记录顺序。
1、建表。
与Set映射时相同,不需增加记录顺序的字段。
2、建类。
Bag映射用Collection接口表示,用任意一个集合类型的实现类,如ArrayList初始化。
3、映射。
与Set映射时相同,标签改为
4、保存。
与Set、List映射相同。
IdBag映射
Bag映射的一种扩展,可重复,可记录顺序。
与List映射很相似。
Map映射(常用)
一个用户有多个电话,如果只保存电话号码,使用Set、List、Bag、IdBag都可以,但如果还要保存电话号码是办公用、住宅用,还是手机,就要用到Map映射。
1、建表。
users表和phone表,phone表三个字段:
userid、phone_number、usage(说明电话号码是办公用还是住宅用,还是其它用途。
usage和phone_number可用键/值对,即用Map映射表示。
2、建类。
仍是一个User类,用Map集合表示phone表中的usage和phone_number两个字段,userid在配置文件中配置后由Hibernate生成。
3、映射。
注意中的内容,特别是键/值对的映射配置。
4、
保存。
由其余各种集合映射相同。
组件映射
组件映射的特点:
一个表映射多个类。
1、建表。
users表,结构如下:
2、建立两个类。
一个user类(映射id、username、password和profile对象),一个profile类(映射email、address、postcode、mobile、phone)。
将email、address、postcode、mobile、phone字段映射到profile类中作为一个组件,再将profile类的对象作为user类的属性。
就称为组件映射。
3、映射。
4、
保存。
只保存user对象即可。
5、以上只实现了单向关联,若想实现双向关联,即从profile对象也可找到user对象,只需在以上的基础上,改动两个地方:
A.在profile类中增加user对象属性。
B.在映射文件的
。
组件集合映射
组件集合映射其实和集合映射类似,只是在将集合作为属性时,集合里的元素不是表中的一个字段(基本类型),而是由组件(复合类型:
类)映射表示。
配置时,在
。
也可实现双向关联,与组件映射时的双向关联类似,配置时,增加一行:
。
关联映射
多对一单向关联
1、建立两个表。
其中category_id可不设外键(如设了外键,可由MyEclipse自动生成关联关系)。
2、建立两个类。
Product类,其中字段category_id要映射为Category属性的对象;Category类。
3、建立两个映射文件。
分别名为Product.hbm.xml和Category.hbm.xml。
其中Product.hbm.xml添加
。
4、操作。
保存、更改、删除:
当保存、更改和删除Product对象时,不会保存、更改和删除相应的Category。
读取:
当读取Product时,可读相应的Category,只是默认情况下,先读取product表,到用到Category,再读取category表。
也就是说,用了两条SQL语句。
若要用一条SQL语句读取出来,在
,也就是说,查询时使用外连接。
一对多单向关联
还是建立两个映射文件。
在Category.hbm.xml增加
。
操作。
保存、更改、删除:
当保存、更改和删除Category对象时,不会保存、更改和删除相应的Product。
若要同时保存、更改和删除相应的Product,可用级联操作(主动方执行操作时,被关联的对象被自动执行同一操作),即
一对多双向关联(表中设外键,可用MyEclipse自动生成)。
一对一关联
一对一关联有两种关联方式:
1、共享主键关联(注意主键生成方式)
Profile.hbm.xml映射文件:
要注意它的ID的生成方式,并添加
2、唯一外键关联
User类和相应的映射文件以及Profile类与共享主键关联的一样。
Profile相应的映射文件:
ID生成方式独立,添加
。
多对多关联
建立三个表,建立两个类(Product类和Order类,Order类中加入Set
。
建立三个表(关联表orderitem外键要设好),由MyEclipse自动生成,注意要勾选Enablemany-to-manydetection选项。
复合主键映射
继承映射
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hibernate 映射
![提示](https://static.bingdoc.com/images/bang_tan.gif)