jdbc6-高级特性4对象关系映射,应用程序架构_第1页
jdbc6-高级特性4对象关系映射,应用程序架构_第2页
jdbc6-高级特性4对象关系映射,应用程序架构_第3页
jdbc6-高级特性4对象关系映射,应用程序架构_第4页
jdbc6-高级特性4对象关系映射,应用程序架构_第5页
免费预览已结束,剩余28页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第六章:

JDBC高级特性4

--对象关系映射,应用程序架构本章内容对象关系映射表与类对应表之间的关系应用程序架构层和组件二层架构三层架构多层架构对象关系映射数据库编程关系是指目前最常用的关系型数据库:MySQL,Oracle……需要将数据和对象进行相互转换一般情况下,一行数据封装成一个对象在面向对象的模型中,数据是作为属性存储有一个学生对象,有学号,姓名,年龄属性,这些属性值表达了一个学生信息在关系数据库中,数据用行存储一个学生表,有学号,姓名,年龄列,一行数据就表示一个学生信息面向对象的类关系模型与数据库的表关系模型相映射类的继承--表的关联对象关系映射对象关系映射:类关系映射到表及表关联属性映射到列对象映射到行类

com.Student表student类com.Student的属性:id,name,age表student的列:id,name,age类com.Student的对象:stu表student的一行数据:2,张三,22

将继承映射到关系表与抽象类映射表与具体类(非抽象类)映射一个表映射整个继承层次中的所有类

表与抽象类映射(1/3)addresslastNamefirstNamepersonOIDsalutationpersonOIDTablesPersonSSNpersonOIDEmployeeCustomerClasses

表与抽象类映射(2/3)addresslastNamefirstNamepersonOIDsaluationpersonOIDTablesPersonSSNpersonOIDEmployeeCustomertypeType:鉴别列Type=‘C’forCustomerType=“E’forEmployeeClasses

表与抽象类映射(3/3)特点:为抽象类创建映射表,通过主外键映射类关系优势这种方式最符合面向对象的概念支持多态因为没有重复数据,所以容易维护缺点需要维护多个表需要更长时间来读取和写入表直接从表生成报告不方便表与具体类映射(1/2)personOIDfirstNamelastNameaddresssaluationpersonOIDfirstNamelastNameaddressssnTablesCustomerEmployeeClasses表与具体类映射(2/2)特点:只对具体类映射到表,抽象父类中的属性在所有的具体子类映射表中去实现优势可以直接从表生成报告缺点如果修改数据,则必须修改相关的所有表数据重复定义(冗余)一个表映射所有类(1/2)TablepersonOIDfirstNamelastNameaddresssaluationssntypeType:discriminatorcolumnType=‘C’forCustomerType=“E’forEmployeeClasses一个表映射所有类(2/2)特点:简单,一个表包含所有类的属性优势模型很容易被理解支持多态性很容易从表直接生成报告缺点数据库表可能变得非常大很难应用数据库的约束规则类中每次添加新属性,都需要更改数据库表当添加一个新列时,需要更新所有记录这列的值日常维护需要更多时间对象关系映射三种方式表与抽象类映射多个表关联,没有重复数据表与具体类映射多个表没有关联,生成报告方便,数据冗余一个表映射所有类只有一个表,维护困难,生成报告方便各有优缺点,根据需要选择Java与SQL数据类型映射SQLTypeJavaTypeCHARVARCHARLONGVARCHARNUMERICDECIMALBITTINYINTSMALLINTINTEGERBIGINTREALFLOATDOUBLEBINARYVARBINARYLONGVARBINARYDATETIMETIMESTAMPStringStringStringjava.math.BigDecimaljava.math.BigDecimalbooleanbyteshortintlongfloatdoubledoublebyte[]byte[]byte[]java.sql.Datejava.sql.Timejava.sql.Timestamp表之间的关系数据库中通过外键保持表之间的关系一对一关系一对多关系多对多关系一个表的外键是另一个表的主键对于一对一或一对多关系,使用一个表中的主键和其他表的外键相关联一对一关系(1/2)carOIDyearmodeldoorsengineOIDmodelcylindarsserNumcarOIDTablescar:Primarytableengine:ForeignkeytableClasses映射到两个类的一个表(2/2)addressOIDline1line2streetcityareaCodecityCodeprovinceCodeTableaddressClasses一对多关系orderOIDisPrePaidnumberdateReceivedorderLineOIDquantitypriceorderOIDTablesorderorderLine

多对多关系addressOIDline1line2streetcitycustomerOIDnamecustomerOIDaddressOIDTablesClassesaddresscustomercustomerAddress:jointable本章内容对象关系映射表与类映射表之间的关系应用程序架构层和组件二层架构三层架构多层架构分层应用程序体系结构概述(1/2)层是一个软件功能模块,提供功能完整的应用程序的某些部分一个学生成绩管理系统可以分为:登陆部分,查询部分,访问数据库部分,成绩显示部分,数据库部分登陆部分和成绩显示部分是学生可以直接看见的(显示层)查询部分,访问数据库部分(业务层)数据库(数据层)各个部分可以在一台电脑中,也可以位于不同的电脑中;可以是桌面程序,也可以是WEB程序层一般是独立的,可以独立更新逻辑意义上的独立:可以独立开发,可以独立更新,修改时相互不受影响,可以位于不同的电脑上可以使用层来协调多个客户端每个客户端可以看做是一个层分层应用程序体系结构概述(2/2)层和组件所有软件系统都可以划分成三个主要部分显示层—接收数据处理请求并显示数据,通常在第一层用户直接使用的层,用户通过显示层提交请求,展示结果业务逻辑层—实现业务规则在两层结构中,处于第一层中在三层或n层结构中,处于第二层中业务逻辑处理(判断用户请求是否合理,编码转换等),数据访问数据层—存储并允许访问数据,通常是在第三层数据库发展过程两层结构三层结构n层结构两层架构(1/3)除数据库以外,其他所有部分作为一个单独的层(客户端)显示层与业务逻辑层合在一起作为一个单独的层客户端负责显示数据,业务逻辑,错误检查…服务器端只负责存储数据主要部分全部集中在客户端,导致客户端很庞大这种体系结构是一种客户端/服务器结构(C/S结构)C是指client—客户端S是指server—服务器端两层架构(2/3)两层架构优缺点(3/3)优点适用于小型应用程序,开发方便,开发周期短如果客户增加,增加一个新的客户端就可以了缺点客户端应用程序负责所有的错误检查,数据显示,业务逻辑等,过于庞大在网络上,数据被暴露,客户端可以直接访问数据,安全性不高数据库或表发生变化会导致客户端代码发生较大的改动每个客户端需要安装驱动程序三层架构(1/2)显示层—业务逻辑层—数据层请求由显示层(客户端)发送到中间层(业务逻辑层)中间层处理业务逻辑并将SQL语句发送到数据库数据库处理SQL语句,并将结果发送回中间层中间层将结果发送给用户(通过显示层显示)三层架构的重点是中间层(业务逻辑层)中间层可以缓存数据,并管理业务规则有专门处理业务规则的代码允许数据库连接池允许管理多个数据源连接可以数据同步简化了客户端开发三层架构(2/2)N层架构(1/3)N层体系架构扩展三层架构,将需要单独处理的功能独立出来作为一个新的层一般是对业务逻辑层进行扩展将一个应用程序从水平或垂直方向划分为N层体系结构水平划分:软件系统有一个发送短信的功能模块,获得客户端请求后,先通过发送短信的模块,然后交给后续的模块处理其他业务逻辑垂直划分:软件系统中有一个打印报表的功能模块,可以不经过其他业务模块直接访问数据库获得数据打印报表,与其他业

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论