- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
根据上文OracleObject定义,也就是说,会有一张Trade表,一张Product表,一张Account表。其中通过Trade_ID的关联实现了数据层级表现
这样做目的是不希望数据库的表设计与OracleObject太过紧密绑定,以免将来有数据库更换的需求或数据迁移的过程中,遇到不可估计的难度。虽然说没有完全用到OracleObject提供优势,可以在列上使用自定义的数据类型,方便存储和查询,但这里使用了一种折中的方案,放弃了一些性能上和编码上的便利,换来了系统今后升级的空间,而且性能的表现也完全在可接受范围内
在V2版本中,所有Datasheet的保存都是在保存过程的基础上完成的,而OracleObject特性中允许用户自定义类型,因此我们运用OracleObject来保存和访问Datasheet。理由很简单,既然定义和使用了OracleObject,就可以在存储过程中充分使用其面向对象的特性,可以轻易的使用其属性和各种方法。举个例子来看,假设我们定义了INSERT_TRADE,即“插入一笔交易”这个类的保存过程,该类的参数是Trade_Object即交易数据,我们用该类的返回参数替代了返回列表。而操纵Trade_Object就和使用Java对象一样。例如需要使用Trade_id,POB_TRADE中的属性Trade_id就可以了,如POB_TRADE.Trade_id。而对于一个有层级结构对象的查修也非常方便,只需要把相应的表做关联,并把关联表中的属性作为参数传入与之对应的OracleObject的构造器内,就可以构建出Oracle对象。但是对于数组形式的属性,却不能像以上的方法设置,如ACCOUNT_LIST。对于数组我们只有重新定义其保存过程一种方法,如PKG_ACCOUNT.GET_ACCOUNT_LIST(POB_LIST_ID)这个类,其返回值是一个数组,我们必须定义一个外部数组变量作为过渡的变量,利用给该变量赋值将数组中的元素移出,将该变量与ACCOUNT_LIST建立连接。接着根据ACCOUNT_LIST的返回值,将外部数组变量里的元素按顺序逐一复制进ACCOUNT_LIST里的对象,最后移除该外部变量,释放空间,就完成了操作
在完成了数据库方面设计和实现后,需要在Java端进行调用。首先需要利用OracleJPublisher生成相应Java类TradeObject,TradeObjectRef等与数据库对象一一对应的类后OracleObject的方式进行调用了。首先定义ParamValuePairList,是传入SQL语句或者存储过程的参数的集合包括SqlInParameter,SqlOutParameter。如果没有OracleObject,SQL或存储过程的维护都会变得非常困难。在引入OracleObject后,存储过程参数就一目了然,TradeObject这个由JPublisher生成出来的Java对象。同时在完成插入操作后,需要通过查询数据表返回最新TradeObject,用来确保数据一致性。所以在ParamValuePairList里定义了SqlOutParameter是TradeObject.class,SqlInParameter则是TradeObject对象,轻易的就把Trade_Object传递给了存储过程。(这里的存储过程INSERT_TRADE_OBJECT就是上文代码中提及的PROCEDUREINSERT_TRADE)
当然为了支持OracleObject,还需要在原生的存储过程调用方法上进行一些改进。当存储过程的返回值是OracleObject时,原生的JDBC方法是不支持的。所以首先判断ParamValuePairList是否定义ORASqlOutParameter,如果存在,说明存储过程返回值是一个OracleObject。这样就需要返回值Class类型,调用其create方法去创建出这个OracleObject对象
以上代码就是在V2版本中使用OracleObject主要流程。其主要作用是取代了Hibernate在V1版本中对于自定义数据存储实现,利用OracleObject面向对象特性,构建出与真实世界业务对象类似结构,类似于JavaPOJO操作,在存储过程中用OracleObject,这样在数据操纵和查询过程中利用Oracle自身优化引擎对存储过程中使用SQL优化,抛弃了由Hibernate生成HSQL,提高效率。根据测试结果,在20000条数据情况下,性能基本可提升一倍。不仅如此,OracleObject后,也就意味系统和Oracle数据库有着紧耦合,并不利于将来有可能的重构,所以在系统中,多增加一个数据转换层。简单说就是业务数据模型还是使用JavaPOJO对象
您可能关注的文档
- 2015___2016仁爱版初中英语八年级英语___全套导学案【上下册】最新版.doc
- 2015___2016仁爱版初中英语九年级英语___全套导学案【上下册】最新版.doc
- 2015___2016新版牛津英语初中英语七年级上___全套测试题【含答案】.doc
- 2015___2016新版新标准外研版(三起)小学英语六年级英语上册全套测试题及答案【精品】.doc
- 2015___2016新人教版初中数学七年级数学上册___全套导学案.doc
- 2015___2016新人教版初中英语八年级英语上册___全套期末复习题精选【含答案】.doc
- 2015___2016新人教版二年级上册数学全套电子教案___全套.doc
- 2015年官渡光网建设园丁小区等项目投资建设可行性分析研究报告.doc
- 2015年光伏电站规章制度___汇编.doc
- 2015年海绵城市建设试点内涝改造项目施工工程施工___组织设计.doc
- problems in business oral english learning英语本科生毕业设计论文.doc
- proii化工流程模拟软件的应用___脱异丁烷塔.doc
- q235钢与0cr18ni9钢焊接的焊接性及焊接___工艺研究.doc
- ruc高压相变的第一性原理计算___外文翻译及原文.doc
- spa会所___商业计划书.doc
- sunshine花草主题餐厅创业___计划书.doc
- taste dream(品味 梦幻) 食品有限公司成立___商业计划书.doc
- tdtg5024斗式提升机机头及中间节设计大学本科毕业设计(论文).doc
- tdtg5024斗式提升机总体及机座部分设计大学本科毕业设计(论文).doc
- the design of digital control acupuncture instrument英语大学本科毕业设计论文.doc
最近下载
- 4.3免疫失调课件(共36张PPT)高中生物学 人教版(2019)选择性必修一.pptx VIP
- 新解读《JB_T 8446 - 2013隐极式同步发电机转子匝间短路测定方法》最新解读.docx VIP
- 一种基于伯努利吸附原理的爬壁检测机器人.pdf VIP
- ZEEKR知识自测及参考答案.docx VIP
- 徐宁金枪手人物介绍水浒传.pptx VIP
- 2025年CSP-S初赛真题(文末附答案).pdf VIP
- 江苏开放大学设计思维与创意设计创意元素训练.doc VIP
- (2024新版本)人教版七年级上册生物全册教案.doc
- 自考劳动和社会保障法历年真题.pdf VIP
- 制冷用水平管降膜蒸发器管束换热优化研究.pdf VIP
文档评论(0)