呵呵,不用hibernate当然可以实现,这个我知道所以我问在hibernate里能不能实现嘛?不过直接通过hibernate实现的话,又没有通过hibernate的变通一下的办法啊?

解决方案 »

  1.   

    当然可以,只是要绕过hibernate 调用jdbc API,当然事务还是由hibernate业管理:
    假如我们创建了以下存储过程:
    create or replace procedure batchUpdateCustomer(p_age in number) as  
    begin  
    update CUSTOMERS set AGE=AGE+1 where AGE>p_age;  
    end;  
    存储过程中有一个参数p_age,代表客户的年龄,应用程序可按照以下方式调用存储过程: 
    代码内容
    tx = session.beginTransaction();  
    Connection con=session.connection();  
    String procedure = "{call batchUpdateCustomer(?) }";  
    CallableStatement cstmt = con.prepareCall(procedure);  
    cstmt.setInt(1,0); //把年龄参数设为0  
    cstmt.executeUpdate();  
    tx.commit();