- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
减少外部耦合 权衡 所谓一个类的职责是指引起该类变化的原因,如果一个类具有一个以上的职责,那么就会有多个不同的原因引起该类变化,其实就是耦合了多个互不相关的职责,就会降低这个类的内聚性。 * 将对象映射到关系数据库 最简单的映射策略—— “一类一表”:表中的字段对应于类的属性,表中的每一行数据记录对应类的实例(即对象)。 person Name address Attribute Name Person_ID Person_name address nulls N N Y Datatype int Char(20) Char(50) Object Model Table Model SQL Code CREATE TABLE Person (person_ID int not null; person_name char(20) notnull; address char(50); PRIMARY KEY Person_ID); 将关联映射到关系数据库(统一的、简单的途径) 不管是1:1、1:n还是m:n的关联关系,均可以采用以下途径映射为关系数据表: A与B分别映射为独立的数据表,然后再加入一张新表来存储二者之间的关联; Class A Class B m n A-ID B-ID B-ID …… A-ID …… 将关联映射到关系数据库(1:1和m:n的关联关系) Implementing 1 to 1 Implementing m:n Class A Class B 1 1 A-ID B-ID …… B-ID …… Foreign key can be on either side Class A Class B m n A-ID B-ID B-ID …… A-ID …… 将关联映射到关系数据库(1:n的关联关系) Implementing 1:n Class A Class B 1 n B-ID A-ID …… A-ID …… Class A Class B n 1 A-ID B-ID …… B-ID …… 将关联映射到关系数据库(基于关联类的关联关系) A-ID B-ID Link-attributes B-ID …… A-ID …… Class A Class B n n Class C 将关联映射到关系数据库(基于关联类的关联关系) Company Company name address person Person name address Works-for 1 * Job title 将组合/聚合关系映射到关系数据库 Class A Class B 实现方法:类似于1:n的关联关系 建立“整体”表 建立“部分”表,其关键字是两个表关键字的组合 一个简单的课堂练习 Order OrderID OrderDate OrderItem ItemID ItemPrice Product ProdID ProdName Customer CustID CustAddress 0..* 1 0..* 1 为以下类图设计关系数据表。 将继承关系映射到关系数据库 Super Sub 1 Sub 2 Super-ID Common fields Super-ID Special fields Requires a join to get the object 策略1:分别建立父类和子类的三张数据表 策略2:将子类的属性上移到父类所对应的数据表中,该表包括父类的属性、各子类的全部属性; 策略3:将父类的属性下移到各个子类所对应的数据表中 将对象映射到关系数据库(继承关系) Person Name student StudentNo professor salary 只建立父类的一个数据表 分别建立 两个子类的 数据表 分别建立 父类和子类的 三张数据表 ? ? ? Example: Persistency:RDBMS:JDBC 插入语:对象关系映射(ORM) 对象关系映射(Object Relational Mapping, ORM): 为了解决面向对象与关系数据库存在的互不匹配的现象; 通过使用描述对象和数据库之间映射的元数据,将OO系统中的对象自动持久化到关系数据库中。 目前流行的ORM产品: Apache OJB Hibernate JPA(Java Persistence API) … 实施构件级设计 步骤1:标识所有与问题类相对应的设计类 步骤2:确定所有与基础设施域相对应的设计类 步骤3:细化所有不能作为复用构件的设计类 步骤3a:在类或构件的协作时说明消息的细节 步骤3b:为每一个构件确定适当的接口 步骤3c:细化属性并且定义相应的数据类型和数据
文档评论(0)