Java中存储过程简化数据库操作 (2)

分类: J2EE   出处:iocblog整理  更新时间:2009-06-19   添加到收藏  

  
  为bmp实体bean自动生成主关键字
  在对ejb实体bean应用bmp时,一个bean实例可以由自动生成的与新插入的数据相关联的主关键字惟一确定,它是ejbcreate()的返回值。可以利用一个插入相应数据的存储过程在一个数据库操作中检索ejbceater()中的该值,并检索或计算主关键字。作为另一种方法,也可以利用jdbc3.0的return_generated_keys特性,以一个sql语句插入该数据并检索相应的关键字(或rowid)。但是,存储过程方法在各个jdbc驱动器版本和数据库之间更具可移植性。
  
  可以用以下三个步骤实现这一模式:
  
  创建一个java存储过程,在公共genpk类中定义一个公共静态java方法insertaccount()。此方法将插入数据、计算惟一的关键字(通过发出一个序列号),并返回计算出的关键字作为主关键字。
  
  定义call spec
  
  create or replace procedure insertaccount(owner in
  varchar, bal in number, newid out number)
  as language java name 'genpk.insertaccount(
  java.lang.string [])';
  /
  
  在ejbcreate()内调用存储过程
  
  public accountpk ejbcreate(string ownername, int balance) throws createexception
  {
    try {
     callablestatement call = conn.preparecall{
     "{call insertaccount(?, ?, ?)}"};
        return new accountpk(accountid);
    }
  }
  
  为cmp实体bean定制主关键字查找器
  查找器方法(finder methods)用于检索已存在的ejb实体bean实例。主关键字查找器使你能够检索惟一标识的ejb实例。对于cmp实体bean,ejb容器根据声明描述,自动生成主关键字查找器findbyprimarykey()方法。但是,在某些情况下,可能需要更多的控制,例如可能需要专门的查找器,如findbystoredprockey()。在这些情况下,你可以结合使用java存储过程和对象关系框架(如oracle9i应用服务器[oracle9ias] toplink)来实现定制的主关键字查找器方法。在将ejb查找器定义为redirect或named查找器后,toplink将生成一个sql查询用于检索bean实例。
  
  数据驱动的ejb调用
  在数据驱动体系结构中,商务逻辑调用可以作为数据库操作(如插入、更新或删除)的结果来触发。实现该数据逻辑的java存储过程可以被声明为数据库触发器,用以调用运行于中间层j2ee应用服务器的ejb。ejb的调用既可以采用j2ee1.3兼容的服务器通过interoperable inter-orb protocol(iiop)标准远程方法调用(remote method invocation,rmi)(来源www.iocblog.net)

上一页 [1] [2]


Tag: 存储过程



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。