免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1164 | 回复: 0
打印 上一主题 下一主题

Hibernate映射组成关系 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-26 15:46 |只看该作者 |倒序浏览
   域模型是由程序代码组成的,通过细化持久化类的粒度可提高代码可重用性,简化编程。
   关系数据模型是由关系数据组成的。在存在数据冗余的情况下,需要把粗粒度的表拆分出具有外键参照关系的几个细粒度的表,从而节省存储空间;另一方面,在没有数据冗余的情况下,要尽可能减少表的数目,简化表间关系,以便提高数据库访问速度。
   例:在CUSTOMER表中存在HOME_PROVINCE、HOME_CITY、HOME_STREET、COM_PROVINCE、COM_CITY、COM_STREET列。
   我们可以单独建立两个地址(Address)类对象作为Customer类的两个属性(homeAddr、comAddr)来代替其三个地址属性。
   Address类如下:
   public class Address{
      private String province;
      private String city;
      private String street;
      
     //getter/setter方法
   }
   Customer类如下:
   public class Customer{
      private long id;
      private String name;
      private Address homeAddr;
      private Address comAddr;
      
     //getter/setter方法
   }
在创建对象-关系映射文件时,不能使用元素来映射homeAddr或comAddr属性,应该使用元素,如:
   
     
     
     
     
   
  • 元素表示homeAddr属性是Customer的一个组成部分(组件)。其中:name属性设定持久化类的属性名,class属性用于设置属性的类型。
  • 子元素:指定指定的属性所属的整体类
  • 子元素:指定组件类的属性和表的字段的映射。
注:Hibernate把持久化类的属性分为两中类型:值类型和实体类型。
   值类型和实体类型最重要的区别是前者没有OID,不能被单独持久化,它的生命周期依赖于所属的持久化类的对象的生命周期;而实体类有OID,可以被单独持久化。
  


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/82195/showart_1667474.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP