1、“.....这是为什么我用属性映射这个词来代替属性映射你所想要做的是映射个类里面的属性到数据库里的字段上,有时这些属性是通过简单的属性实现的,而其它些时候是由个或者多个操作所决定的。图在个类图里包含信息我还没有讨论的种信息是用个类型的标志来表示当前个对象是否存在于数据库中。这里的问题是当你把数据保存到个关系型数据中,如果原先的对象是从数据库中获取出来的,你需要使用个语句来保存数据,否则应该使用语句。个普通的解决方法是为每个类实现个的型信号标志图里没有显示,当数据是从数据库里面读取的时候把它的值设置成,如果对象是新创建的话则设置为。在社区里面的个通用的风格约定是在类图里不显示信息......”。
2、“.....类似的通常也不显示支撑代码。因为每个人都知道你需要做这种事情,所以何必浪费时间去显示这些明显的事实呢信息不必用业务对象来实现,不过那样你的程序就要在其他地方处理这个问题。例如,在里你把主键保存在以外的主键类里,独立对象引用相关的主键对象。而进步的,则是在里面实现信息,而不是在业务对象里。映射元数据图显示了元数据,这些是代表持久化图里和类所需要的属性映射。元数据是关于数据的信息。因如下原因使得图显得很重要的。首先,我们需要个方式来表现映射。我们可以把个并排放在起,就像图里面那样,然后在它们之间画线,是这很快会变的非常复杂,而另外个选择是像图里面这样列表第......”。
3、“.....这是个可以让敏捷数据库技术发挥作用的数据库封装策略。图我采用的命名规则是非常直接了当的指得是类里的属性。类似的还有,指得是表里的字段。指得是里的操作而则是被属性引用的对象里的属性。看起来最难理解的属性是,它指向在将要保存的实例里列表中的位置。图暗示了面向对象技术和关系型技术之间个最重要的阻抗失配。同时实现行为和数据,而关系型数据库的表仅仅保存数据而已。这导致当你映射个类的属性到关系型数据库时,你也需要映射那些操作到数据库字段上,例如和。虽然在这个例子里面没有出现,但是你常常需要映射仅代表个属性两个操作到个字段个操作是设置值如,而另外个是获取值,如这些操作通常分别被称作和......”。
4、“.....个键值都要被映射到类里的个属性上,例如在和之间的映射,这实际是关系映射的部分工作,将在本章的后面进行讨论。这是因为在关系数据库里通过使用键值来实现数据间的联系。如何使映射适合全过程继承结构的映射由于关系数据库不是生来就支持继承的,这就强制你必须将对象的继承结构映射到相应的数据库中去。多半是因为不牢靠的基类译注不牢靠的基类是指,有时基类很难修改,因为旦修改基类,子类就容易出错的原因,面向对象社区不太提倡使用继承,而我的经验表明之所以出现这个问题,是因为面向对象的开发者们大多缺乏封装的技巧,而非继承概念本身出了问题。我想说的是,事实上,你只需要做少量的工作,即可将个继承层次映射到关系数据库中去......”。
5、“.....把对象存入关系数据库时,继承的概念会带来些有趣的变化。如何在数据模型中组织那些通过继承而得到的属性本节中,你将看到用来解决如何将继承关系映射到数据库的种基本方法,以及第种补充方法,它不限于继承映射。这些方法如下所示整个类层次结构映射到张表每个具体类单独映射到张表每个类单独映射到张表所有类映射到个通用的表结构如图所示,有两个版本的类层次结构,我们将通过讨论如何映射这两个结构,来深入了解每种方法。第个版本描述了个类个抽象类,和两个具体类和。之所以知道是抽象类,是因为在图中它用斜体表示。在较早版本的中,会用约束来表示抽象类。第个版本在第个版本的基础上......”。
6、“.....旨在描述,当实现了第个类层次结构之后,有了个新的需求,要求为雇员中的执行主管,而非普通雇员,颁发固定的年度分红。类就是为了满足这新功能而添加的。简单起见,我没有对这些类的所有属性属性的完整签名,以及类的任何操作进行建模。而这幅类图恰好足以满足我的目的,换句话说,这是个敏捷的模型。此外,这些类层次结构本应该用分析模式中的模式或模式。我并没有这么做,因为在这里,我并不是为了说明分析模式的有效应用,而是用个简单的例子来说明继承层次结构的映射我总是遵循敏捷建模的每次只针对个目标建模的原则。图个简单类层次结构的两个版本误用继承也会带来问题比如,图的层次结构本应该通过,模式或模式进行更好的建模。举例来说......”。
7、“.....为此你要在内存中保留多个对象,而这可能会给你的应用程序带来问题。我选择这个例子是因为我需要个简单的,易于理解的类层次结构来进行映射。整个层次结构映射到张表按照此策略,把所有类的所有属性都存储到张表中去。当采用这种方法时,图中的类层次结构对应的数据模型如图所示。这是非常直观的方式,每个类的属性都存储到表中,表名最好用类层次结构中根类的名字来命名。图映射到张表表里多加了两个字段和。图中,衍型说明第个字段是表的主键,第个字段是标识代码,用来指明个人是顾客还是雇员,抑或两者皆是。是个代理键,它是持久化对象的标识通常简称为对象标识,。本应该使用可选衍型来标示的,但已经暗示了这层意思......”。
8、“.....这类衍型只会无谓地使我们的类图更复杂参见实践简单地描述模型。数据建模详细讨论了代理键的相关内容。用来识别对象类型的字段是必需的,这个对象可以由给定的数据库中的行数据实例化而来。例如,取值为表示该人是雇员,表示是顾客,则表示既是雇员又是顾客。这种方法看似直观,但当类型数目和类型间联合越来越多的时候,这种方法就渐渐变的力不从心了。例如,添加执行主管的概念,需要添加个码值,比如以来代表。对于值来说,它代表的是既是雇员又是顾客,此时就显得有点不伦不类了。此外,有些类间联合中可能会包括执行主管,比如,个人既是执行主管又是顾客也是很合乎情理的事情,这种情形也需要个码值来表示。对于各种类型联合的情况......”。
9、“.....如图所示。为了简单,没有包含那些需要并发控制的字段,比如位于图表中的时间戳字段,同时,用于数据版本跟踪的字段也没有包括在内。图种重构方法每个具体类映射到单独的张表这种方法为每个具体类创建张表,每张表既包括对应类自己实现的那些属性,也包括它继承下的那些属性。采用这种映射方法,图中的类层次结构所对应的映射表,对象从这些表中被实例化,而抽象类则没有对应的表。分别为每张表分配对应的主键,和。为了支持后加的类,需要做的全部事情就是添加张相应的表,表中包括所有对象所需要的属性。图把具体类映射成表每个类单独映射到张表遵循这个策略,为每个类创建张表......”。
1、手机端页面文档仅支持阅读 15 页,超过 15 页的文档需使用电脑才能全文阅读。
2、下载的内容跟在线预览是一致的,下载后除PDF外均可任意编辑、修改。
3、所有文档均不包含其他附件,文中所提的附件、附录,在线看不到的下载也不会有。