欢迎来到天天文库
浏览记录
ID:52509018
大小:311.86 KB
页数:18页
时间:2020-04-09
《映射组成关系,继承关系.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、映射组成关系教学内容创建具有组成关系的域模型创建粗粒度关系数据模型映射组成关系区分值类型和实体类型映射继承关系从粗粒度对象模型到精粒度对象模型为了提高程序代码的可重用性,不妨从Customer类中抽象出单独的Address类,不仅Customer类可以引用Address类,如果日后又增加了Employee类,它也包含地址信息,那么Employee类也能引用Address类。按这种设计思想创建的对象模型称为精粒度对象模型,它可以最大程度的提高代码的重用性。为了提高程序代码的可重用性,不妨从Customer类中抽象出单独的Address类,不仅Customer类可以引用Add
2、ress类,如果日后又增加了Employee类,它也包含地址信息,那么Employee类也能引用Address类。按这种设计思想创建的对象模型称为精粒度对象模型,它可以最大程度的提高代码的重用性。组成关系的特征Customer类与Address类之间为组成关系,它们的关系有以下特征:Address对象的生命周期依赖于Customer对象。当删除一个Customer对象,应该把相关的Address对象删除。一个Address对象只能属于某个特定的Customer对象,不能被其他Customer对象共享。CUSTOMERS表参照ADDRESS表建立关系数据模型的一个重要原则是
3、在不会导致数据冗余的前提下,尽可能减少数据库表的数目以及表之间的外键参照关系。因为如果表之间的外键参照关系很复杂,那么数据库系统在每次对关系数据进行插入、更新、删除和查询等SQL操作时,都必须建立多个表的连接,这是很耗时的操作,会影响数据库的运行性能。以下SQL语句用于查询名为“Tom”的客户的家庭地址:selectPROVINCE,CITY,STREET,ZIPCODEfromCUSTOMERSasc,ADDRESSasawherec.HOME_ADDRESS_ID=a.IDandc.NAME='Tom';粗粒度关系数据模型createtableCUSTOMERS(ID
4、bigintnotnull,NAMEvarchar(15),HOME_STREETvarchar(255),HOME_CITYvarchar(255),HOME_PROVINCEvarchar(255),HOME_ZIPCODEvarchar(255),COM_STREETvarchar(255),COM_CITYvarchar(255),COM_PROVINCEvarchar(255),COM_ZIPCODEvarchar(255),primarykey(ID));域模型和关系数据模型域模型中类的数目比关系数据模型中表的数目多用元素来映射homeA
5、ddress属性6、column="HOME_ZIPCODE"/>元素表明homeAddress属性是Customer类的一个组成部分,在Hibernate中称之为组件。元素有两个属性:name:设定被映射的持久化类的属性名,此处为Customer类的homeAddress属性。class:设定homeAddress属性的类型,此处表明homeAddress属性为Address类型。用元素来映射homeAddress属性元素还包含一个子元素和一系列7、>子元素。元素指定Address类所属的整体类,这里设为customer,与此对应,在Address类中应该定义一个customer属性,以及相关的getCustomer()和setCustomer()方法:privateCustomercustomer;publicCustomergetCustomer(){returnthis.customer;}publicvoidsetCustomer(Customercustomer){this.customer=customer;}持久化Customer对象tx=s
6、column="HOME_ZIPCODE"/>元素表明homeAddress属性是Customer类的一个组成部分,在Hibernate中称之为组件。元素有两个属性:name:设定被映射的持久化类的属性名,此处为Customer类的homeAddress属性。class:设定homeAddress属性的类型,此处表明homeAddress属性为Address类型。用元素来映射homeAddress属性元素还包含一个子元素和一系列7、>子元素。元素指定Address类所属的整体类,这里设为customer,与此对应,在Address类中应该定义一个customer属性,以及相关的getCustomer()和setCustomer()方法:privateCustomercustomer;publicCustomergetCustomer(){returnthis.customer;}publicvoidsetCustomer(Customercustomer){this.customer=customer;}持久化Customer对象tx=s
7、>子元素。元素指定Address类所属的整体类,这里设为customer,与此对应,在Address类中应该定义一个customer属性,以及相关的getCustomer()和setCustomer()方法:privateCustomercustomer;publicCustomergetCustomer(){returnthis.customer;}publicvoidsetCustomer(Customercustomer){this.customer=customer;}持久化Customer对象tx=s
此文档下载收益归作者所有