- 2
- 0
- 约6.83千字
- 约 10页
- 2016-11-26 发布于重庆
- 举报
hibernate一對一多对一和多对多关系的比较
现在学习完了这几种映射关系,但是有点乱,这里来小结一下。关键是表之间如何产生映射关系,以及产生的表的结构。
1、一对一映射:
一对一是通过one-to-one标签来产生映射关系的,其实,如果单单说是建立两个表之间的关联,只要在一个映射文件中配置one-to-one标签就可以了,在另一个映射文件中,也做类似的配置,只会起到关联的作用,建立起双向的关联。这里举Person和IdCard的例子,IdCard类的映射文件如下:
[html] HYPERLINK /hackerain/article/details/7020008 \o view plain view plain HYPERLINK /hackerain/article/details/7020008 \o copy copy HYPERLINK /hackerain/article/details/7020008 \o print print HYPERLINK /hackerain/article/details/7020008 \o ? ?
class?name=IdCard?table=id_card??
????????id?name=id??
??????????????generator?class=native/generator??
????????/id??
????????property?name=No/??
????????one-to-one?name=person?constrained=true/??
/class??
constrained=true指定了将person表的主键设置为id_card表的外键,这样就建立起了两个表的关联,若不指定,两个表就是孤立的,互相没有关系。
建立表的ddl语句如下:
[sql] HYPERLINK /hackerain/article/details/7020008 \o view plain view plain HYPERLINK /hackerain/article/details/7020008 \o copy copy HYPERLINK /hackerain/article/details/7020008 \o print print HYPERLINK /hackerain/article/details/7020008 \o ? ?
CREATE?TABLE?`id_card`?(??
??`id`?int(11)?NOT?NULL?AUTO_INCREMENT,??
??`No`?varchar(255)?DEFAULT?NULL,??
??PRIMARY?KEY?(`id`),??
??KEY?`FK627C1FB4AEED3EC`?(`id`),??
??CONSTRAINT?`FK627C1FB4AEED3EC`?FOREIGN?KEY?(`id`)?REFERENCES?`person`?(`id`)??
)?ENGINE=InnoDB?AUTO_INCREMENT=2?DEFAULT?CHARSET=gbk??
在Person类的映射文件中可以不指定one-to-one标签,但那样建立起来的是单向的映射关系,即从id_card表可以映射到person表,但是反之就不行。这在通过person表查询id_card表时,不能查询。如果要让person关联到id_card那么就要在Person类的映射文件中,也配置一下one-to-one标签了。
2、多对一映射:
建立两个表的映射的关系,都是通过建立外键来关联的,多对一也不例外,例如员工和部门的关系属于多对一的关系,多个员工属于同一个部门,所以在部门类中要有一个员工的集合属性。要实现双向映射的话,还必须在员工类中有部门的属性。如果单单建立两个表之间的关联,也像一对一一样,只需要在一个映射文件中配置就可以了,但是,多对一的映射文件的配置不像一对一那样简单,相对复杂的是在“一”这个角色,不是只使用一个one-to-many就可以了的,看下面这个配置“一”角色的例子:
[html] HYPERLINK /hackerain/article/details/7020008 \o view plain view plain HYPERLINK /hackerain/article/details/7020008 \o copy copy HYPERLINK /hackerain/article/details/7020008 \o print print HYPERLINK /hackerain/article/details/7020008 \o ? ?
部门类的映射文件:??
class?name=Department??
?
您可能关注的文档
- g德育類—张宾宾—《基于数字故事的深度学习对中职思想品德教育》.doc
- gz_-KQF公司的營销策略.doc
- G公司汽車售后服务质量的现状和问题分析.doc
- GSM蜂窩移动通信网络中移动性的管理.doc
- G以太網的应用研究.doc
- GSM層3信令在路测掉话中的分析和应用.doc
- Gwpopu財务管理专业职业生涯规划.doc
- GSM網规网优部基于MR的网络优化工作指导书V10.doc
- G終端的关键技术和发展趋势.doc
- H-piles與Mini-piles的设计分析.doc
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
原创力文档

文档评论(0)