java处理Oracle Types过程全记录(一)

来源:互联网 发布:尔雅网络课程怎么上 编辑:程序博客网 时间:2024/05/12 15:17
 

背景:公司的老系统是在99年开发的,用的c++与oracle,现在系统升级,要把它移植到j2ee平台。此系统业务十分复杂,数据量十分庞大,动辄就是操作上千万条记录,为了提高效率,以前的开发人员用了多个oracle job,避开业务使用的高峰期,把大量的数据先直接放入临时表里,然后再在某个时间段集中对数据进行处理,每天的数据量差不多需要2到3个小时才能处理完成。而这些复杂的逻辑都是使用存储过程来处理,c++反而成了展现的平台。

        在接触这个系统以前,我一直认为pl/sql是过程化的语言,想不到它也可以用oo的方式,oracle可以自定义对象,即STRUCT和ARRAY。

REATE OR REPLACE   TYPE "OOTYP"   AS OBJECT
(
cName 
VARCHAR2(20),
cStatus 
CHAR(1),
sXX 
VARCHAR2(20),
sXXXX 
VARCHAR2(20),
nxxxxx 
INTEGER,
MEMBER 
FUNCTION CHANGE(P_KEY IN VARCHAR2RETURN LONG,
PRAGMA RESTRICT_REFERENCES( CHANGE, WNDS, WNPS, RNDS, RNPS ),
STATIC 
FUNCTION CREATENULL RETURN OOVCHARCSUBTYP
)

 

以上是一个STRUCT的定义。有变量,有函数,静态函数。。很多地方都像是一个Object,而且方法可以重载,不过它还是缺少一些oo的关键东东,例如继承。ARRAY相当于自定义数组,其中它可以是STRUCT数组。而在存储过程中,in or out的参数都是使用这种自定义的对象。而这些STRUCT,就相当于在多层架构中business object的作用。

        我的工作现在就是要把这套系统移植到j2ee平台上,由于时间很紧,而且系统和数据库交互太频繁,大数据量,用java重写逻辑基本不可能,所以我只能通过java来调用这些存储过程,可是如何调用成了我当前最大的问题,如何in/out  STRUCT,如何in/out ARRAY,幸好这些问题都已经被解决。

        我将通过以下几个方面分别介绍:

       (1)通过jdbc直接调用。

      (2 )通过Ibatis sqlmaps调用。

      (3)在weblogic中如果调用。

原创粉丝点击