在hibernate 3中使用存储过程

时间:2010-07-01 12:51:08

标签: java hibernate stored-procedures

您好我从5个月开始使用hibernate + spring但从未在hibernate中使用过存储过程所以请任何人告诉我如何从DB(MySQL)调用存储过程....

3 个答案:

答案 0 :(得分:1)

Hibernate将存储过程调用定义为命名查询。文档解释了Hibernate配置中的how to set this up

从Spring开始,您可以使用各种HibernateTemplate.findByNamedQuery(...)方法调用命名查询。

答案 1 :(得分:0)

Spring有一个StoredProcedure类,您可以将其扩展为调用存储过程。

class MyStoredProcedure extends StoredProcedure {
     public MyStoredProcedure(DataSource ds) {
          this.setDataSource(ds);
          this.setSql("store_procedure_name");
          this.declareParameter(new SqlParameter("name", Types.VARCHAR);
          this.compile();
     }

     public void callProcedure() {
          Map<string, String> inParams = new HashMap<String, String>();
          inParams.put("name", "taher");
          try {
               execute(inParams);
          } catch (DataAccessException dae) {
          }
     }
}

答案 2 :(得分:0)

由于你已经在使用Spring和Hibernate,我建议使用Spring类。您可以扩展上面提到的StoredProcedure类,还有其他替代方法。如果你有一个基本的存储过程,我会说最简单的方法就是使用Spring的SimpleJdbcCall类。 Spring documentation很好地涵盖了这个类与代码片段。