- 1、本文档共64页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
持久化框架.ppt
* thorough transaction handling 完整的事务处理 * 使用模板方法设计的框架 将ProductSpecificationRDBMapper中get()部分通用部分单独提取出来 it is common for the template method to be public, and the hook method to be protected. * * 使用前面的框架 ——定义ProductDescriptionRDBMapper类 覆盖或实现getObjectFromStorage()方法,自动获得框架中的算法 假定getObjectFromStorage()方法中 从数据库读取各种对象时仅select语句中的数据库表名不同,则可进一步精化为下图,将select语句也放入框架中 * 框架的进一步精化 * 红色部分是内部的方法调用,与模板无关 蓝色部分是调用钩子方法, 将获得记录作为通用的部分,而得到记录后如何创建对象放在每个不同的子类中 AbstractRDBMapper中 getObjectFromStorage()作为AbstractPersistenceMapper的hook的同时,作为ProductDescriptionRDBMapper的模板方法,钩子方法是getObjectFromRecord() * 最终的持久化框架及其使用 * 最终的持久化框架 下面的包:抽象类和接口组成的框架 上面的包:具体的实现类 其中:ProductDescriptionInMemoryTestDataMapper 用于测试,不访问任何外部存储库,直接将对象硬编码进来用于测试 * Get方法加上 guarded,线程安全 不同线程同时物化同一个对象(都在读取数据库中同一个记录来创建对象) * 映射器的配置,如何配置ProductSpecification类使用ProductSpecificationRDBMapper、Sale使用SaleRDBMapper? 使用工厂模式,但这个例子是不好的设计,若再增加类X使用XFileMapper,则需修改MapperFactory。增加getFileMapper( )方法 * 该幻灯上例为更好的设计,将class与Mapper的映射关系从系统属性读取,放在Map数据结构中 下例为调用方法 * 对前面的例子(如该页幻灯)进一步隐藏SQL语句(考虑到SQL语句可能变化,不再使用前面分析中的提炼为getDBRecord()的方法) 而是如下 * 原来的做法 * RDBOperations使用单体模式,并将所有SQL操作放在RDBOperations类中,便于SQL专家进行维护和性能调优 还可方便地将硬编写的SQL替换为RDB存储过程调用等,或更复杂的基于元数据生成SQL,在外界定义元数据的规格说明,动态产生SQL。 * * * Transactional States and the State Pattern * 持久化对象的状态图——针对PersistentObject类的状态图 simplified view of transactions. new 刚创建还没写入数据库 old: 已经从数据库中取出 Clean 未修改过 Dirty 修改过了 oldClean和数据库中一致 oldDirty修改过还未写入数据库 olddelete:删除了,尚未从数据库删除 deleted 删除了 reload从数据库中重新加载老的信息 update更新数据库 1.对象刚产生时怎么样?——两种产生方式,对应不同状态 2. 接着可以对对象做什么操作?-save or delete,分别作不同处理 * 一种简化的设计——每个持久化对象都扩展PersistentObject类,这样获得PersistentObject提供的技术服务 但可能导致一些问题:应用逻辑和持久化服务的混合 * PersistentObject类的状态图 一种代码实现方式 * 另一种使用状态模式实现PersistentObject类的状态图 具体见下页 * 每个具体的状态定义为不同的类 * 各个状态类实现和状态图中对应的方法(修改数据库、切换状态) 9. The Deleted class is omitted due to space constraints in the diagram. * 前面是简化了的trasaction,这里进一步讨论几个设计问题 * 一个transaction中可能有两个插入、一个update和三个delete,其顺序影响其成功与否以及性能 Designing a Transaction with the Command
您可能关注的文档
- 我的家乡广西贺州.ppt
- 我的少女时代.ppt
- 我的新同学.ppt
- 我省危险化学品安全生产若干问题探讨.ppt
- 战略新兴产业发展的规划、政策以及产业发展的趋势.ppt
- 房屋建筑学.ppt
- 手卫生与感染控制.ppt
- 手把手教你半对数作图.doc
- 打包采购合同.doc
- 托福听力失读连音表.doc
- 小学科学:ESP8266智能插座电路原理与动手实践研究教学研究课题报告.docx
- 《金融开放浪潮下我国多层次监管体系构建与创新研究》教学研究课题报告.docx
- 区域教育质量监测中人工智能应用的数据质量分析与优化策略教学研究课题报告.docx
- 《金融科技监管中的数据治理与合规性要求》教学研究课题报告.docx
- 《3D打印技术在航空航天领域中的多材料制造与复合材料应用》教学研究课题报告.docx
- 《绿色金融发展中的政府职能与市场机制研究》教学研究课题报告.docx
- 《植物工厂多层立体栽培光环境调控技术对植物生长发育节律的调控机制探讨》教学研究课题报告.docx
- 销售团队年度业绩总结.docx
- 银行风险管理与金融危机防范.docx
- 银行网络攻击预警与快速响应机制.docx
最近下载
- 2022医院医疗机构开展违反中央八项规定精神突出问题专项治理的实施方案(详细版).pdf VIP
- 半导体工艺炉的炉门及半导体工艺炉.pdf VIP
- 测绘行业安全生产汇报.pptx VIP
- 半导体后端工艺半导体封装的作用、工艺和演变.docx VIP
- 半导体工艺原理--半导体工艺原理(贵州大学).ppt VIP
- 麦肯锡中国银行业CEO季刊(2020年秋)-麦肯锡-224页正式版.pdf VIP
- 走进潮汕文化ppt课件(优质ppt).pptx
- DG_TJ 08-2439-2024 建筑工程“多测合一”技术标准(正式版).pdf VIP
- Camera客观标准测试.pdf VIP
- 2024年湖北省恩施州恩施市六角亭街道招聘社区工作者真题参考答案详解.docx VIP
文档评论(0)