不知道爲什麼,在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中也沒有見過。