`
pingwei000
  • 浏览: 60945 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

使用HibernateTemplate调用存储过程

阅读更多
共有两种方式
第一种
----------------------------------

----------------------------------

---

CallableStatement cstmt =

hibernateTemplate.getSessionFactory

().getCurrentSession().connection

().prepareCall("{call proc_name}");

cstmt.executeUpdate();
----------------------------------

----------------------------------

----

第二种
----------------------------------

----------------------------------

----
hibernateTemplate.execute(
new HibernateCallback()
{
public Object doInHibernate

(Session session) throws

SQLException
{
CallableStatement cs =

session.connection().prepareCall

("{call proc_name}");

cs.executeUpdate();
return null;
}
}
);



hibernate3.0以上提供了两种方式执行存储过程。

第一种 :用JDBC 方式

Session session =HibernateSessionFactory.getSession(); //获取hibernate会话

Connection conn = session.connection(); // 用session对象获取连接

ResultSet rs =null;

try
  {
    CallableStatement call = conn.prepareCall("{Call pro_getManager(?,?)}");

   call.setString(1, "admin");
   call.setString(2, "admin");
   rs = call.executeQuery();

  }
  catch (Exception e)
  {
   e.printStackTrace();
  }finally
  {

   rs.close();//关闭
   session.close();//关闭连接
   HibernateSessionFactory.closeSession(); //关闭会话
  }

这种方式本人感觉与hibernate结合不很紧密,还难以控制,还要自己控制关闭

第二种: 用hibernate中SQLQuery 接口执行,其实与执行sql没有两样。

Session session =HibernateSessionFactory.getSession(); //获取hibernate会话

String procName="{Call pro_getManager(?,?) }";

SQLQuery query = session.createSQLQuery(proc);
query.setString(0, "admin");
query.setString(1, "admin");
List list =query.list();

session.close();

HibernateSessionFactory.closeSession();

SQLQuery 接口功能很强大吧

分享到:
评论

相关推荐

    hibernateTemplate批量删除数据

    在Hibernate框架中,`HibernateTemplate`提供了一种更为简洁、易于使用的API,用于执行基本的CRUD(创建、读取、更新、删除)操作。对于批量删除数据,`HibernateTemplate`提供了`bulkUpdate()`方法,该方法通过执行...

    使用Spring进行数据访问

    例如,JdbcTemplate提供了模板方法,用于执行SQL查询、更新和存储过程,而NamedParameterJdbcTemplate则允许使用命名参数,使得SQL语句更易读。 接下来,Spring集成ORM框架,如Hibernate和MyBatis,极大地提高了...

    Spring持久化模板总结

    在Spring框架中,持久化是将应用程序数据存储到数据库的关键环节。Spring提供了多种持久化模板,如JdbcTemplate和HibernateTemplate,以简化数据库操作并减少代码中的样板代码。这两个模板都是Spring JDBC模块的一...

    spring4.2与Hibernate4.3配置

    4.3版本带来了JPA 2.1的支持,包括存储过程调用、新查询语言JPQL的增强以及更好的Caching机制。此外,它还优化了性能,提高了对大数据集的处理能力。 当Spring和Hibernate结合使用时,通常会通过Spring的...

    Hibernate的demo

    虽然Hibernate主要处理对象和关系的映射,但也可以支持数据库存储过程的调用。通过`Session`对象的`doWork()`方法,我们可以传递一个实现了`Work`接口的实例,然后在其中执行自定义的SQL(包括存储过程)。这使得在...

    Spring3mvc和hibernate整合示例代码

    在学习和使用过程中,应关注如何配置和管理事务,以及如何优雅地处理数据库查询和更新操作。同时,对于Spring的依赖注入和AOP(面向切面编程)特性,也需要有深入的理解,以便更好地利用Spring MVC和Hibernate的优势...

    Spring与Hibernate整合

    例如,定义DataSource、SessionFactory和HibernateTemplate等Bean,其中DataSource用于存储数据库连接信息,SessionFactory则是Hibernate的主要入口点,而HibernateTemplate则为Spring提供了一组操作Hibernate的便捷...

    Spring.3.x企业应用开发实战(完整版).part2

    11.2.6 调用存储过程 11.3 BLOB/CLOB类型数据的操作 11.3.1 如何获取本地数据连接 11.3.2 相关的操作接口 11.3.3 插入Lob类型的数据 11.3.4 以块数据方式读取Lob数据 11.3.5 以流数据方式读取Lob数据 11.4 自增键和...

    Spring3.x企业应用开发实战(完整版) part1

    11.2.6 调用存储过程 11.3 BLOB/CLOB类型数据的操作 11.3.1 如何获取本地数据连接 11.3.2 相关的操作接口 11.3.3 插入Lob类型的数据 11.3.4 以块数据方式读取Lob数据 11.3.5 以流数据方式读取Lob数据 11.4 自增键和...

    Spring中文帮助文档

    使用SimpleJdbcCall调用存储过程 11.5.6. 声明SimpleJdbcCall使用的参数 11.5.7. 如何定义SqlParameters 11.5.8. 使用SimpleJdbcCall调用内置函数 11.5.9. 使用SimpleJdbcCall返回的ResultSet/REF Cursor 11.6...

    Spring API

    使用SimpleJdbcCall调用存储过程 11.5.6. 声明SimpleJdbcCall使用的参数 11.5.7. 如何定义SqlParameters 11.5.8. 使用SimpleJdbcCall调用内置函数 11.5.9. 使用SimpleJdbcCall返回的ResultSet/REF Cursor 11.6...

    第 Struts 整合Spring开发PPT学习教案.pptx

    2. **使用HibernateTemplate**:通过Spring提供的HibernateTemplate,简化了数据库操作,避免了直接操作Session。 3. **注入DAO组件**:同样采用DI,将DAO组件注入到业务逻辑组件中,处理数据库操作。 4. **注入...

    spring+hibernate整合

    在DAO层,我们将使用Hibernate的Session接口来进行CRUD(创建、读取、更新、删除)操作,这些操作可以通过Spring的JdbcTemplate或者HibernateTemplate进行封装,避免直接暴露Session,从而提高代码的可维护性。...

    留言板Struts2 代码

    该类的关键方法是`saveOrUpdate()`,它接受一个`Object`类型的参数,并使用`HibernateTemplate`对象来执行实际的保存或更新操作。`HibernateTemplate`是Spring框架提供的用于操作Hibernate的一个工具类,它简化了...

    Velocity+Spring 2[1].0+Hibernate的Web应用开发框架

    - **使用 HibernateTemplate 或者 SessionFactory 进行 CRUD 操作**:Spring 提供了 HibernateTemplate 来简化 Hibernate 的使用,也可以直接使用 SessionFactory 执行更复杂的操作。 - **事务管理**:Spring 提供了...

    spring 对dao 的操作

    DAO模式是一种常用的设计模式,它的主要目标是提供一个接口,隐藏底层数据存储的细节,使得业务逻辑代码可以独立于数据源进行操作。在SSH架构中,Spring作为IoC(Inversion of Control)容器,负责管理DAO对象的生命...

    HibernateSpringStruts2整合开发中的一个分页显示方案.doc

    `getAllRowCount()`则直接使用`HibernateTemplate.find(hql)`的大小来获取记录总数。 3. **分页信息类**: `PageBean`类是用来存储分页信息的容器。它包含了当前页的记录列表`list`,总记录数`allRow`,总页数`...

    springMvc+hibernate+MySQL

    在Spring MVC中,可以通过Spring的HibernateTemplate或SessionFactoryBean进行集成,实现数据访问层的事务化和对象管理。 MySQL是一个广泛使用的开源关系型数据库管理系统,以其高性能、稳定性及易用性著称。在Web...

    spring4.0整合hibernate5.1.0.Final+mysql5

    MySQL 5版本提供了一套强大的数据管理工具和优化,支持事务处理、存储过程等高级特性。 4. **整合步骤**: - **配置环境**:首先,确保安装了Java运行环境(JRE)和Java开发工具(JDK),并设置好环境变量。 - **...

    spring hibernate security整合

    同时,Spring的HibernateTemplate或HibernateDaoSupport类可以帮助我们简化数据访问操作,减少对Hibernate API的直接调用。 Spring Security(原名Acegi Security)是安全控制的核心。在整合Spring Security时,...

Global site tag (gtag.js) - Google Analytics