1 存储过程
create
or
replace
procedure p_proc
is
begin
insert into testTable (id, name,age) values( seq_getid.nextval, 'tiger', '25');
end p_proc;
is
begin
insert into testTable (id, name,age) values( seq_getid.nextval, 'tiger', '25');
end p_proc;
2 Hibernate 调用存储过程
public
void insertProcedure()
{
Session ses = this.getHibernateTemplate().getSessionFactory().openSession();
try{
Connection conn = ses.connection();
conn.setAutoCommit( false);
String proc= "{Call p_proc()}";
CallableStatement st = conn.prepareCall(proc);
st.executeUpdate();
conn.commit();
st.close();
conn.close();
ses.close();
} catch(Exception e){
e.printStackTrace();
}
}
{
Session ses = this.getHibernateTemplate().getSessionFactory().openSession();
try{
Connection conn = ses.connection();
conn.setAutoCommit( false);
String proc= "{Call p_proc()}";
CallableStatement st = conn.prepareCall(proc);
st.executeUpdate();
conn.commit();
st.close();
conn.close();
ses.close();
} catch(Exception e){
e.printStackTrace();
}
}
3 总结
Hibernate 调用存储过程要通过Connection对象来做jdbc的操作完成。
要是存储过程中有参数只要作一下简单调整上面的代码:
CallableStatement st = conn.prepareCall(
"{CALL p_proc(?)}");
st.setString(1,key);
st.execute();
st.setString(1,key);
st.execute();
现在还没有找到更好的处理存储过程的方法,有待进一步学习。
转载于:https://blog.51cto.com/yuwenhu/151399