《酒店软装设计是多元化的产品.pptx》由会员分享,可在线阅读,更多相关《酒店软装设计是多元化的产品.pptx(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2022-1-28Institute of Computer SoftwareNanjing UniversityPersistent Objects持久对象2022-1-28Institute of Computer SoftwareNanjing UniversityObject Persistencel问题l解决方案lLanguage-levellDatabaseslRelational lO-RlObject-Oriented databaselHibernate 简介l讨论2022-1-28Institute of Computer SoftwareNanjing Universit
2、yPersistence lWhat happens to the objects of an application when its execution terminates?lTransient objectslPersistent objects2022-1-28Institute of Computer SoftwareNanjing University / Serialize todays date to a file. FileOutputStream f = new FileOutputStream(tmp); ObjectOutput s = new ObjectOutpu
3、tStream(f); s.writeObject(Today); s.writeObject(new Date(); s.flush();Java:Writing to an Object Stream2022-1-28Institute of Computer SoftwareNanjing UniversityReading from an Object Stream / Deserialize a string and date from a file. FileInputStream in = new FileInputStream(tmp); ObjectInputStream s
4、 = new ObjectInputStream(in); String today = (String)s.readObject(); Date date = (Date)s.readObject();2022-1-28Institute of Computer SoftwareNanjing University对象结构的存储与提取对象结构的存储与提取l对象持久化的难点之一:l对象之间的引用2022-1-28Institute of Computer SoftwareNanjing University对象结构的存储与提取对象结构的存储与提取l需持久化整个对象引用闭包lPersistenc
5、e closurelJava的serializable规则l缺省规则:非static 非transient 的数据成员l用户定义class List implements Serializable List next; private static final ObjectStreamField serialPersistentFields = new ObjectStreamField(next, List.class); 2022-1-28Institute of Computer SoftwareNanjing University对象结构的存储与提取对象结构的存储与提取l存储格式问题l
6、同构环境l异构环境 lXML (Tool: Caster )2022-1-28Institute of Computer SoftwareNanjing University对象结构的存储与提取对象结构的存储与提取l闭包可能太大l小对象引用(共享的)大对象2022-1-28Institute of Computer SoftwareNanjing University对象结构的存储与提取对象结构的存储与提取lJava 的 transient 修饰子lTransient fields 不被序列化lStatic 也不l开发者负责维护2022-1-28Institute of Computer So
7、ftwareNanjing UniversitySchema evolutionl持久化问题的又一难点l读取对象的类不是存储对象的类,比如做了修改,或是其某个子类?lNave approachesl放弃先前持久化的对象l一次性全体转换l自动对象转换lDetectionlNotificationlCorrection2022-1-28Institute of Computer SoftwareNanjing University自动对象转换自动对象转换lDetection:标记对象版本lPolicies: nominal vs. structurallNominal: class version
8、ing l命名Configuration Management或者 Random number (OLE2)l集中注册处lStructural: 依据Class 结构l据之生成 Class descriptor,类名;类全文;类名属性方法; 再加类不变式2022-1-28Institute of Computer SoftwareNanjing University自动对象转换自动对象转换lNotificationl语言机制支持lEiffelin Class GENERALcorrect_mismatch is doraise_mismatch_exceptionend开发者可在ANY中为整个
9、系统重定义该feature2022-1-28Institute of Computer SoftwareNanjing University自动对象转换自动对象转换lCorrectionl增加attributel删除attributel核心在于维护不变式维护不变式2022-1-28Institute of Computer SoftwareNanjing University自动对象转换:自动对象转换:JavalserialVersionUID l自动定义 (根据类文件生成)l1. Class name 2. The class modifiers 3. The name of each in
10、terface 4. For each field of the class(except private static and private transient fields): The name of the field The modifiers of the field The descriptor of the field l5. For each method including constructors, except private methods and constructors: The name of the method The modifiers of the me
11、thod The descriptor of the method 2022-1-28Institute of Computer SoftwareNanjing University自动对象转换:自动对象转换:Javal手工指定lANY-ACCESS-MODIFIER static final long serialVersionUID = 42L; l类改变时仍然能够反序列化lJava定义了一些“兼容”条件,符合条件的自动转换l可以容忍的:adding fields etcl太糟糕的: “Changing the type of a field”, del fields, etc2022-1
12、-28Institute of Computer SoftwareNanjing University对于实在对于实在“糟糕糟糕”的类修改的类修改l可以定制序列化和反序列化方法private void readObject(ObjectInputStream in) private void writeObject(ObjectOutputStream out) 2022-1-28Institute of Computer SoftwareNanjing University对象持久化与数据库对象持久化与数据库l为什么要数据库l序列化:单个对象入口的一个对象闭包,须一次提取、重建所有对象l基于
13、内容的查询?l并发存取?2022-1-28Institute of Computer SoftwareNanjing University对象持久化与数据库对象持久化与数据库l数据库lPersistence lProgrammable structurelArbitrary sizelAccess controllProperty-based queering lIntegrity constraintslAdministrationlSharinglLockinglTransaction自然地,要用数据库来存储持久化对象2022-1-28Institute of Computer Softw
14、areNanjing University对象持久化与数据库对象持久化与数据库l关系型数据库:数据库的主流l关系l关系代数lSelection, Projection , Join2022-1-28Institute of Computer SoftwareNanjing University2022-1-28Institute of Computer SoftwareNanjing University2022-1-28Institute of Computer SoftwareNanjing University对象持久化与数据库对象持久化与数据库l对象 关系 互操作l模型不同l如果l有时
15、对象系统必须处理关系数据库中的数据l有时对象结构很简单,关系模型能够表达l否则 impedance mismatch2022-1-28Institute of Computer SoftwareNanjing University对象持久化与数据库对象持久化与数据库limpedance mismatchl关系数据库l数据结构规整,成员数目类型固定l结构简单,成员类型属于一个既定小集合l这些类型由大小固定的类型组合而成l那么l大小不定的域?l表示对象引用的域?基于引用的间接查询?l继承?l更重要的是:对象identity语义2022-1-28Institute of Computer Softw
16、areNanjing University对象持久化与数据库对象持久化与数据库l面向对象数据库l解决面向对象软件系统进行对象持久化时,与关系数据库间的不匹配问题l克服关系数据库本身的限制l提供更高级的数据库设施2022-1-28Institute of Computer SoftwareNanjing University对象持久化与数据库对象持久化与数据库l面向对象数据库最小要求 zdonik 1990l数据库功能l支持封装l对象联系于唯一IDl支持对象引用l此外l对象版本,类版本与schema evolution, Long transactions, locking queris2022
17、-1-28Institute of Computer SoftwareNanjing UniversityHibernate: Object-Relation Mappingl当前的现实:l应用分层l两层结构l三层结构lN-层结构2022-1-28Institute of Computer SoftwareNanjing University2022-1-28Institute of Computer SoftwareNanjing University2022-1-28Institute of Computer SoftwareNanjing University2022-1-28Insti
18、tute of Computer SoftwareNanjing University对象关系对象关系 映射映射l简单映射l将一个类中的一个数据成员定为关键字l其它数据成员为属性l添加、更新、删除、查询2022-1-28Institute of Computer SoftwareNanjing University对象关系对象关系 映射映射l继承:l方案1:l子类父类各自映射到各自的关系上。l优点?缺点?2022-1-28Institute of Computer SoftwareNanjing University对象关系对象关系 映射映射l继承l方案 2:l所有继承自一个类的类都映射到一个
19、表上l增加一栏标记当前记录对应的对象的类l优点? 缺点?2022-1-28Institute of Computer SoftwareNanjing University对象关系对象关系 映射映射l继承l方案 3:l父类映射的关系與子映射的关系共享相同的主鍵值,父类关系只記錄本身的屬性,如果要查詢的是子类,則透過外鍵參考從父类表格中取得繼承而來的屬性值。 2022-1-28Institute of Computer SoftwareNanjing University2022-1-28Institute of Computer SoftwareNanjing University2022-1-
20、28Institute of Computer SoftwareNanjing University对象关系对象关系 映射映射lComponent 映射l子对象lSet 映射l对象中某属性是一个集合l集合元素仅仅是值,无identity l映射到另一个关系,用外关键字表明其属于哪个对象lList 映射l与Set类似 再加一栏表示位置2022-1-28Institute of Computer SoftwareNanjing University对象关系对象关系 映射映射lMap映射lKey-Val 属于谁lSet 和 Map可排序2022-1-28Institute of Computer S
21、oftwareNanjing University对象关系对象关系 映射映射l实体映射l实体:有id的关系l实体之间的关系l一对一l一对多l多对一l多对多2022-1-28Institute of Computer SoftwareNanjing UniversityHibernatelSession管理l事务管理l乐观锁定l悲观锁定lCaching Java Persistence APIl作为EJB3的一部分lHibernate可作为JPA的providerlBTW, about “provider”2022-1-28Institute of Computer SoftwareNanjing University2022-1-28Institute of Computer SoftwareNanjing University讨论讨论作业作业-10 (复习,不需要提交)(复习,不需要提交)1.Java语言“transient”关键字与对象序列化有何关系?2.对象序列化与反序列化时的“Schema evolution”问题具体指什么?一般如何处理之?3.为何对象持久化要使用数据库?何谓对象关系映射?尝试学习、使用Hibernate。2022-1-28Institute of Computer SoftwareNanjing University
限制150内