酒店软装设计是多元化的产品

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2019/8/18InstituteofComputerSoftwareNanjingUniversityPersistentObjects持久对象酒店设计问题解决方案Language-levelDatabasesRelationalO-RObject-OrienteddatabaseHibernate简介讨论2019/8/18InstituteofComputerSoftwareNanjingUniversityPersistenceWhathappenstotheobjectsofanapplicationwhenitsexecutionterminates?TransientobjectsPersistentobjects2019/8/18InstituteofComputerSoftwareNanjingUniversity//Serializetoday'sdatetoafile.FileOutputStreamf=newFileOutputStream(tmp);ObjectOutputs=newObjectOutputStream(f);s.writeObject(Today);s.writeObject(newDate());s.flush();Java:WritingtoanObjectStream2019/8/18InstituteofComputerSoftwareNanjingUniversityReadingfromanObjectStream//Deserializeastringanddatefromafile.FileInputStreamin=newFileInputStream(tmp);ObjectInputStreams=newObjectInputStream(in);Stringtoday=(String)s.readObject();Datedate=(Date)s.readObject();2019/8/18InstituteofComputerSoftwareNanjingUniversity对象结构的存储与提取对象持久化的难点之一:对象之间的引用2019/8/18InstituteofComputerSoftwareNanjingUniversity对象结构的存储与提取需持久化整个对象引用闭包PersistenceclosureJava的serializable规则缺省规则:非static非transient的数据成员用户定义classListimplementsSerializable{Listnext;privatestaticfinalObjectStreamField[]serialPersistentFields={newObjectStreamField(next,List.class)};}2019/8/18InstituteofComputerSoftwareNanjingUniversity对象结构的存储与提取存储格式问题同构环境异构环境XML(Tool:Caster…)2019/8/18InstituteofComputerSoftwareNanjingUniversity对象结构的存储与提取闭包可能太大小对象引用(共享的)大对象2019/8/18InstituteofComputerSoftwareNanjingUniversity对象结构的存储与提取Java的transient修饰子Transientfields不被序列化Static也不开发者负责维护2019/8/18InstituteofComputerSoftwareNanjingUniversitySchemaevolution持久化问题的又一难点读取对象的类不是存储对象的类,比如做了修改,或是其某个子类?Naïveapproaches放弃先前持久化的对象一次性全体转换自动对象转换DetectionNotificationCorrection2019/8/18InstituteofComputerSoftwareNanjingUniversity自动对象转换Detection:标记对象版本Policies:nominalvs.structuralNominal:classversioning命名ConfigurationManagement或者Randomnumber(OLE2)集中注册处Structural:依据Class结构据之生成Classdescriptor,类名;类全文;类名+属性+方法;再加类不变式2019/8/18InstituteofComputerSoftwareNanjingUniversity自动对象转换Notification语言机制支持EiffelinClassGENERALcorrect_mismatchisdoraise_mismatch_exceptionend开发者可在ANY中为整个系统重定义该feature2019/8/18InstituteofComputerSoftwareNanjingUniversity自动对象转换Correction增加attribute删除attribute核心在于维护不变式2019/8/18InstituteofComputerSoftwareNanjingUniversity自动对象转换:JavaserialVersionUID自动定义(根据类文件生成)1.Classname2.Theclassmodifiers3.Thenameofeachinterface4.Foreachfieldoftheclass(exceptprivatestaticandprivatetransientfields):ThenameofthefieldThemodifiersofthefieldThedescriptorofthefield5.Foreachmethodincludingconstructors,exceptprivatemethodsandconstructors:ThenameofthemethodThemodifiersofthemethodThedescriptorofthemethod2019/8/18InstituteofComputerSoftwareNanjingUniversity自动对象转换:Java手工指定ANY-ACCESS-MODIFIERstaticfinallongserialVersionUID=42L;类改变时仍然能够反序列化Java定义了一些“兼容”条件,符合条件的自动转换可以容忍的:addingfieldsetc太糟糕的:“Changingthetypeofafield”,delfields,etc2019/8/18InstituteofComputerSoftwareNanjingUniversity对于实在“糟糕”的类修改可以定制序列化和反序列化方法privatevoidreadObject(ObjectInputStreamin){}privatevoidwriteObject(ObjectOutputStreamout){}2019/8/18InstituteofComputerSoftwareNanjingUniversity对象持久化与数据库为什么要数据库序列化:单个对象入口的一个对象闭包,须一次提取、重建所有对象基于内容的查询?并发存取?2019/8/18InstituteofComputerSoftwareNanjingUniversity对象持久化与数据库数据库PersistenceProgrammablestructureArbitrarysizeAccesscontrolProperty-basedqueeringIntegrityconstraintsAdministrationSharingLockingTransaction自然地,要用数据库来存储持久化对象2019/8/18InstituteofComputerSoftwareNanjingUniversity对象持久化与数据库关系型数据库:数据库的主流关系关系代数Selection,Projection,Join2019/8/18InstituteofComputerSoftwareNanjingUniversity2019/8/18InstituteofComputerSoftwareNanjingUniversity2019/8/18InstituteofComputerSoftwareNanjingUniversity对象持久化与数据库对象关系互操作模型不同如果有时对象系统必须处理关系数据库中的数据有时对象结构很简单,关系模型能够表达否则impedancemismatch2019/8/18InstituteofComputerSoftwareNanjingUniversity对象持久化与数据库impedancemismatch关系数据库数据结构规整,成员数目类型固定结构简单,成员类型属于一个既定小集合这些类型由大小固定的类型组合而成那么大小不定的域?表示对象引用的域?基于引用的间接查询?继承?更重要的是:对象identity语义2019/8/18InstituteofComputerSoftwareNanjingUniversity对象持久化与数据库面向对象数据库解决面向对象软件系统进行对象持久化时,与关系数据库间的不匹配问题克服关系数据库本身的限制提供更高级的数据库设施2019/8/18InstituteofComputerSoftwareNanjingUniversity对象持久化与数据库面向对象数据库最小要求[zdonik1990]数据库功能支持封装对象联系于唯一ID支持对象引用此外对象版本,类版本与schemaevolution,Longtransactions,lockingqueris2019/8/18InstituteofComputerSoftwareNanjingUniversityHibernate:Object-RelationMapping当前的现实:应用分层两层结构三层结构N-层结构2019/8/18InstituteofComputerSoftwareNanjingUniversity2019/8/18InstituteofComputerSoftwareNanjingUniversity2019/8/18InstituteofComputerSoftwareNanjingUniversity2019/8/18InstituteofComputerSoftwareNanjingUniversity对象-关系映射简单映射将一个类中的一个数据成员定为关键字其它数据成员为属性添加、更新、删除、查询2019/8/18InstituteofComputerSoftwareNanjingUniversity对象-关系映射继承:方案1:子类父类各自映射到各自的关系上。优点?缺点?2019/8/18InstituteofComputerSoftwareNanjingUniversity对象-关系映射继承方案2:所有继承自一个类的类都映射到一个表上增加一栏标记当前记录对应的对象的类优点?缺点?2019/8/18InstituteofComputerSoftwareNanjingUniversity对象-关系映射继承方案3:父类映射的

1 / 43
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功