【Hibernate学习】 ——ORM(一)
2021-06-29 18:07
Hibernate是一种能实现ORM的框架。
ORM即Object Relational Mapping。对象关系映射。也就是将关系数据库中表的数据映射成为对象。也就是说将表与表之间的操作映射成对象与对象之间的操作,通过实体类来达到操作表的目的。总之就是把对数据库的操作转化为对对象的操作,从而更体现了面向对象的思想。
一对一关联映射策略包含主键关联和唯一外键关联。
单向一对一
主键关联
让两个对象有同样的主键值,表名它们之间的一对一关系。数据库没有额外的字段来维护它们之间的关系,只通过表的主键来关联。例如以下图:通过两个表中id来维护关系。没有额外的字段或者表去维护其之间的关系。
从图中可看出,既然是单向关联,那么Person能够持有IdCard对象。而IdCard对象不知道Person的存在。故因此由Person端来维护关系。
Person.hbm.xml关系代码
idCard
IdCard.hbm.xml代码
唯一外键关联
外键关联被拿来是用于多对一的配置。可是假设加上唯一的限制之后。也能够用来表示一对一的关联关系。因此唯一外键关联是多对一的一种特殊情况。是通过
表关系:
通过
unique表示是唯一外键关联。故还是通过person端来维护关系,所以和主键关联对照仅仅须要更改person关系中的标签为
主要改变的是Person类的映射:
小结:通过表关系能够看出来,主键关联是通过person表中的id来维护关系,没有多余的字段,相当于id既当主键又当外键。改动数据非常难;而唯一外键关联是增加第三个字段来维护关系。可扩展性显然比主键关联好。
——————————————————————————————————————————————
双向一对一
主键关联
上面是单向的,那么设置成双向的。也就是IdCard也想得到与之相应的Person对象。那么IdCard就须要增加person属性。例如以下:
Person关系映射同主键关联映射。
idCard关系映射:
比起单向关联外。双向关联的关系在IdCard端增加
唯一外键关联
表关系:
同单向关联的关系一样。生成的表结构也一样。
person关系代码同单向。
idCard关系代码:
相同是在idCard端增加关联
须要加如property-ref="idCard",为关系字段的名称。
由于idCard不为主键,所以要增加此属性。
———————————————————————————————————————————————
综上。单向和双向的差别就是对关系的持有,在idCard端加入
通过总结,对照之后特别清晰,简单易懂。下篇博客继续分析。
上一篇:js—双等号引起的类型转换过程
文章标题:【Hibernate学习】 ——ORM(一)
文章链接:http://soscw.com/index.php/essay/99487.html