- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
hibernate复杂实体映射
联合主键:
例如,Student类要用firstname和lastname作为联合主键
@类直接包含firstname和lastname,此时类Student必须实现接口Serializable,并且要定义equals()和hashCode()方法;Student.hbm.xml文件中用如下配置:
composite-id
key-property name=firstname column=first_name type=java.lang.String/
key-property name=lastname column=last_name type=java.lang.String/
/composite-id
@将联合主键涉及到的列单独定义在一个类中,以主键类的形式出现在实体类中:
如上例则是将firstname lastname作为类StudentId的属性,而StudentId则作为Student类的属性存在,StudentId和Student类都要实现接口Serializable,并实现两个方法。而在Student.hbm.xml文件中的配置如下:
composite-id name=id class=com.oristand.StudentId
key-property name=firstname type=java.lang.String
column name=first_name length=16/
/key-property
key-property name=lastname type=java.lang.String
column name=last_name length=16/
/key-property
/composite
使用联合主键映射方式的操作(增删改查)时,需要同时知道联合主键的全部属性值
2. 组合映射
例如一个数据表字段中包含两个地址,一个是家庭地址,一个是办公地址,都包含城市,街道和邮政编码,在这样的情况下可以用组合映射的方式来完成对象关系映射关系。可以在Person.hbm.xml配置文件中加入如下代码:
component name=address class=com.oristand.Address
property name=city column=address_city type=string/
property name=street column=address_street type=string/
property name=zipcode column=address_zipcode type=stirng/
/componet
component name=mailAddress class=com.oristand.MailAddress
property name=city column=mail_city type=string/
property name=street column=mail_city type=string/
property name=zipcode column=mail_zipcode type=string/
/component
3, 集合类映射:
@集合类通常用来存储一组对像,常用的集合类包括Collection接口的子类Set和List,Map等,在配置文件中加入如下配置:
set name=topics table=topic
key
column name=id precision=22 scale=0 not-null=true/
/key
element type=java.lang.String column=topic_name/
/set
关联映射:一对多/多对一
例如:Employee(员工,多方),Department(部门,一方)
则在Employee.hbm.xml中要加入如下代码:
many-to-one name=department class=com.oristand.Department fetch=select cascade=save-update
column name=dept_id precision=22 scale=0/
/many-to-one
在Department.hbm.xml中要加入如下代码:
set name=employees cascade=save-update
key
column name=dept_id precision=22 scale=0/
/key
one-to-many class=com.oristand.Employee/
/set
注意:一对多/多对一关联关
文档评论(0)