- 1、本文档共34页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关系持久化
单向关联是一个实体中引用了另外一个实体。简单的说,就是一个通过一个实体可以获得另一实体的对象。如图所示,显示的是实体A对实体B的单向关联,在实体A中可以获得实体B对象,但实体B中不能获得实体A的对象。例如,此时实体A的代码可以如下所示。public class EntityA {private EntityB entityB;public EntityB getEntityB() {return entityB;}public void setEntityB(EntityB entityB) {this.entityB = entityB;}}实体B的代码可以如下所示。public class EntityB {?}在实体A中,可以获得实体B的对象,实体B作为实体A的一个属性存在。实体B中没有实体A的引用。这时可以认为实体A关联到实体B,但实体B并不关联实体A。双向关联是两个实体之间可以相互获得对方对象的引用。如图所示,显示的实体和实体B的双向关联,在实体A中可以获得实体B对象,实体B中也能获得实体A的对象。例如,此时实体A的代码不变,将实体B的代码修改如下所示。public class EntityB {private EntityA entityA;public EntityA getEntityA() {return entityA;}public void setEntityA(EntityA entityA) {this.entityA = entityA;}}在实体B中增加了实体A的属性,可以获得实体A的对象,实体A作为实体B的一个属性存在。这样,一旦获得了实体A的对象便可以获得实体B对象;同样,一旦获得了实体B的对象便可以获得实体A的对象一对多是一个实体中不仅能获得一个实体的引用,而且能够获得多个实体的引用。如图所示,为实体A和实体B的一对多的关系。例如,此时实体A的代码可以如下所示。public class EntityA {private CollectionEntityB entitys;public CollectionEntityB getEntitys() {return entitys;}public void setEntitys(CollectionEntityB entitys) {this.entitys = entitys;}}将实体B对象的集合对象作为实体A的属性,这样实体A就可以获得多个实体B对象的引用了。一旦获得实体A对象便可以获得多个实体B的对象,此时成实体A与实体B是一对多的关系。多对多是两个实体间都可以获得对方多个实体对象的引用。如图所示,为实体A和实体B的多对多的关系。此时,实体A的代码同一对多示例中的代码相同,而实体B的代码修改为以下所示。public class EntityB {private CollectionEntityA entitys;public CollectionEntityA getEntitys() {return entitys;}public void setEntitys(CollectionEntityA entitys) {this.entitys = entitys;}}将实体A对象的集合对象作为实体B的属性,这样实体B也可以获得多个实体A对象的引用。一旦获得实体B对象便可以获得多个实体A的对象;一旦获得实体A对象便可以获得多个实体B的对象,此时成实体A与实体B是多对多的关系。一个客户对应一个地址,通过客户可以获得该客户的地址信息。客户和地址是一对一的关系,但通过地址不能获得客户信息,客户和地址是单向关联。如图所示为客户实体和地址实体的类关系图。在数据库中,对应的表customer和表address定义的结构SQL语句如下所示。--客户表CREATE TABLE customer ( id int(20) NOT NULL auto_increment, name varchar(100) ,address_id int(20) , PRIMARY KEY (id))--地址表CREATE TABLE address ( id int(20) NOT NULL auto_increment, province varchar(50) , city varchar(50) , postcode varchar(50) , detail varchar(50) , PRIMARY KEY (id))表customer中的address_id字段为表address中的id的值。通过address_id,可以找到对应的address记录。表中存在数据时,如图所示。此时将表customer映射为CustomerEO实体
文档评论(0)