Chinaunix首页 | 论坛 | 博客
  • 博客访问: 38955
  • 博文数量: 14
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 150
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-14 13:14
文章分类

全部博文(14)

文章存档

2008年(14)

我的朋友

分类: Java

2008-11-26 15:46:26

   域模型是由程序代码组成的,通过细化持久化类的粒度可提高代码可重用性,简化编程。
   关系数据模型是由关系数据组成的。在存在数据冗余的情况下,需要把粗粒度的表拆分出具有外键参照关系的几个细粒度的表,从而节省存储空间;另一方面,在没有数据冗余的情况下,要尽可能减少表的数目,简化表间关系,以便提高数据库访问速度。

   例:在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,可以被单独持久化。


 
阅读(639) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~