- 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,只需要调用OracleObjectPOB_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等与数据库对象一一对应的类后,就可以使用JavaJDBC的操纵这些类以OracleObject的方式进行调用了。首先定义ParamValuePairList,是传入SQL语句或者存储过程的参数的集合包括SqlInParameter,SqlOutParameter。如果没有OracleObject,当需要将数据插入到数据表中,特别当表的字段比较多时,SQL语句会变得非常长难以维护并且需要非常仔细的定义每个列顺序和保证每个数据类型是否一致;如果使用存储过程,将会有定义一系列参数,一般而言参数数量将会和表字段数一致。当数据表需要增加新字段或修改原有字段时,SQL或存储过程的维护都会变得非常困难。在引入OracleObject后,存储过程参数就一目了然,当插入数据到Trade表中,只需要传入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,这样在数据
您可能关注的文档
- 本科毕业论文---andriod---音乐播放器.doc
- 本科毕业论文---6000亩石榴标准化种植基地项目建设计划书.doc
- 本科毕业论文---6100q型双燃料压燃式发动机柴油供给系统设计.doc
- 本科毕业论文---7702型摩托车转向锁支架冲压模具设计.doc
- 本科毕业论文---网上书店网站(jsp---java---).doc
- 本科毕业论文---20152016新人教版初中英语八年级英语上册全套期末复习题精选【含答案】.doc
- 本科毕业论文---a comparative study of chinese and american education system and education idea论文.doc
- 本科毕业论文---ahzc0655锤片粉碎机的设计.doc
- 本科毕业论文---autocad绘图软件在《机械制图》中的应用..doc
- 本科毕业论文---a酒店主体建筑工程项目的财务评估评价分析.doc
最近下载
- 《通信原理B》课程教学大纲.pdf VIP
- 39 浅议OVATION控制系统中的跟踪功能.doc VIP
- 计算机网络基础题库.docx VIP
- 注塑产品报价单(有报价公式).xlsx VIP
- 腹主动脉腔内治疗进展.ppt VIP
- 负压封闭引流技术(Vacuum Sealing Drainage VSD)在.doc VIP
- CRH380B型动车组制动系统故障分析.docx VIP
- 赖世雄中级美语教程+1-148课笔记.doc VIP
- 第一单元第二节《初识物联网》课件++2025-2026学年川教版(2024)初中信息科技八年级上册.pptx VIP
- 《给水排水管道工程施工及验收规范》GB 50268—2008.doc VIP
原创力文档


文档评论(0)