不知道为什么,在Hibernate中没有调用存储过程的封装类,当然整个Java在调用存储过程上,使用方法都不是太好。
下面写一个Hibernate使用存储过程的例子:
思路主要还是通过java.sql.connection 这个接口来实现的,由Hibernate来获取session,再由session来获取connection;
(session.connection() API上说这个方法过时,但是也没有找到可替代的方法,暂时先用着)。
public void testProcedure(){
String sql="Call spt_edbTradeGet(?,?)";//存储过程名称(参数)
Connection conn=getSession().connection();//getSession() 可以是父类HibernateTemplate下的方法
try {
CallableStatement statement = conn.prepareCall(sql);
statement.setString(1, "");//根据实际情况填写相应类型的参数
statement.setString(2, "");
System.out.println(statement.execute());//成功与否
System.out.println(statement);//结果根据实际的情况,自己确定
} catch (Exception e) {
System.out.println(e.toString());
}
}
*:上学那会儿使用.NET的时候,常常会使用到存储过程,在Java的工作中用到的少,不知道微软是怎么想的,也不知道SUN怎么想的…………
就是感觉用微软的东西才这样,Oracle中也没有见过。