﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-shuimudaoliang</title><link>http://www.blogjava.net/shuimudaoliang/</link><description /><language>zh-cn</language><lastBuildDate>Sat, 02 May 2026 22:10:32 GMT</lastBuildDate><pubDate>Sat, 02 May 2026 22:10:32 GMT</pubDate><ttl>60</ttl><item><title>读书笔记1（在实达的日子里）</title><link>http://www.blogjava.net/shuimudaoliang/archive/2006/01/21/28892.html</link><dc:creator>shuimudaoliang</dc:creator><author>shuimudaoliang</author><pubDate>Sat, 21 Jan 2006 12:40:00 GMT</pubDate><guid>http://www.blogjava.net/shuimudaoliang/archive/2006/01/21/28892.html</guid><wfw:comment>http://www.blogjava.net/shuimudaoliang/comments/28892.html</wfw:comment><comments>http://www.blogjava.net/shuimudaoliang/archive/2006/01/21/28892.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/shuimudaoliang/comments/commentRss/28892.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/shuimudaoliang/services/trackbacks/28892.html</trackback:ping><description><![CDATA[<h2 align="center"><a id="viewpost1_TitleUrl" class="singleposttitle" href="../../flyingis/archive/2005/11/12/19513.html">Hibernate学习心得--软件设计阶段的模型</a></h2>
<br>
<font size="2"><br>
在科学和工程技术领域，模型是一个很有用途的概念，它可以用来模拟一个真实的系统。在软件开发领域，模型用来表示真实世界的实体。在软件开发的不同阶段，
需要为目标系统创建不同类型的模型。在分析阶段，需要创建概念模型。在设计阶段，需要创建域模型和数据模型。其中，域模型是面向对象的，数据模型是面向关
系的，域模型和数据模型之间存在一种对象-关系映射。<br><br><b>概念模型</b><br><br>&nbsp;
&nbsp;&nbsp;&nbsp;概念模型清楚地显示了问题域中的实体。不管是技术人员还是非技术人员都能看得懂改面模型，他们可以很容易地提出模型
中存在的问题，帮助分析人员及早对模型进行修改。在软件设计域开发周期中，模型的变更需求提出得越晚，所耗费得开发成本就越大。<br><br>&nbsp;
&nbsp;&nbsp;&nbsp;概念模型描述了每个实体得概念和属性，以及实体之间的关系：一对一、一对多和多对多。在现实生活中都可以找到相应的
例子，例如一只母鸡有很多小鸡是一对多关系，一位客户选购了很多商品，而这些商品也可以被许多客户选购，这是多对多关系。<br><br><b>关系数据模型</b><br><br>&nbsp;&nbsp;&nbsp;&nbsp;到目前为止，关系数据库仍然是使用最广泛的数据库，它存储的是关系数据。关系数据模型是在概念模型的基础上建立起来的，用于描述这些关系数据的静态结构，它由以下内容组成：<br><br>&nbsp;&nbsp;&nbsp;&nbsp;一个或多个表<br>&nbsp;&nbsp;&nbsp;&nbsp;表的所有索引<br>&nbsp;&nbsp;&nbsp;&nbsp;视图<br>&nbsp;&nbsp;&nbsp;&nbsp;触发器<br>&nbsp;&nbsp;&nbsp;&nbsp;表与表之间的参照完整性<br><br>&nbsp;
&nbsp;&nbsp;&nbsp;数据库Schema是对数据模型的实现。对于支持SQL的关系数据库，可以采用SQL&nbsp;DDL语言来创建
数据库Schema。SQL&nbsp;DDL&nbsp;用于生成数据库中的物理实体，例如下面的创建CUSTOMERS表的&nbsp;
SQL&nbsp;DDL：<br><br>&nbsp;&nbsp;&nbsp;&nbsp;create&nbsp;table&nbsp;CUSTOMERS&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ID&nbsp;int&nbsp;not&nbsp;null,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NAME&nbsp;varchar(20),<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AGE&nbsp;int,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;primary&nbsp;key&nbsp;(ID)<br>&nbsp;&nbsp;&nbsp;&nbsp;};<br><br>&nbsp;&nbsp;&nbsp;&nbsp;
值得注意的是，数据库Schema有两种含义，一种是概念上的Schema，指的是一组DDL语句集，该语句集完整地描述了数据库的结构。还有一种是物理
上的Schema，指的是数据库中的一个名字空间，它包含一组表、视图和存储过程等命名对象。物理Schema可以通过标准SQL语句来创建、更新和修
改。例如以下SQL语句创建了两个物理Schema：<br><br>&nbsp;&nbsp;&nbsp;&nbsp;create&nbsp;schema&nbsp;SCHEMA_A;<br>&nbsp;&nbsp;&nbsp;&nbsp;create&nbsp;table&nbsp;SCHEMA_A.CUSTOMERS(ID&nbsp;int&nbsp;not&nbsp;null,……);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;create&nbsp;schema&nbsp;SCHEMA_B;<br>&nbsp;&nbsp;&nbsp;&nbsp;create&nbsp;table&nbsp;SCHEMA_B.CUSTOMERS(ID&nbsp;int&nbsp;not&nbsp;null,……);<br><br><b>域模型</b><br><br>&nbsp;&nbsp;&nbsp;&nbsp;域模型由以下内容组成：具有状态和行为的域对象；域对象之间的关系。<br><br>域对象<br><br>1.实体域对象：代表人、地点、事物或概念。通常，可以把业务领域中的名词，例如客户、订单、商品，当然也包括前面提到过的母鸡，作为实体域对象；<br>2.过程域对象：代表应用中的业务逻辑或流程。它通常依赖于实体域对象。<br>3.事件域对象：代表应用中的一些事件，例如异常、警告或超时等。<br><br>域对象之间的关系<br><br>&nbsp;&nbsp;&nbsp;&nbsp;在域模型中，类之间存在四种关系。<br><br>1.关联(Association)<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;关联指的是类之间的引用关系，这是实体域对象之间最普遍的一种关系。关联可以分为一对一、一对多和多对多关联。<br><br>2.依赖(Dependency)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;依赖指的是类之间的访问关系。如果类A访问类B的属性或方法，或者说是A负责实例化B，那么可以说类A依赖类B。<br><br>3.聚集(Aggregation)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;聚集指的是整体与部分之间的关系，在实体域对象之间也很常见。例如，人与手就是聚集关系，在Person类中由一个hands集合，它存放被聚集的Hand对象：<br><br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;class&nbsp;Person&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Set&nbsp;hands&nbsp;=&nbsp;new&nbsp;HashSet();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;…………<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>4.一般化(Generalization)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;一般化指的是类之间的继承关系。<br><br>域对象的持久化概念<br><br>&nbsp;
&nbsp;&nbsp;&nbsp;当实体域对象在内存中创建后，它们不可能永远存在。最后，他们要么从内存中清除，要么被持久化到数据存储库中。内存
无法永久地保存数据，因此必须对实体域对象进行持久化。否则，如果对象没有被持久化，用户在应用运行时创建地订单信息将在应用结束运行后随之消失。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;当然，并不是所有地域对象都需要持久化，通常只有实体域对象才需要持久化，另外，有些实体域对象也不需要持久化。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;狭义的理解，“持久化”仅仅指把域对象永久保存到数据库中；广义的理解，“持久化”包括和数据库相关的各种操作。</font><img src ="http://www.blogjava.net/shuimudaoliang/aggbug/28892.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/shuimudaoliang/" target="_blank">shuimudaoliang</a> 2006-01-21 20:40 <a href="http://www.blogjava.net/shuimudaoliang/archive/2006/01/21/28892.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>