`
jiaguwen123
  • 浏览: 411115 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

hibernate存储过程调用

阅读更多

听说Hibenate3可以在执行存储过程了,但在网上了一些资料,基本上都是Hibernate文档中带的那个例子,其中也只是一个查询的例子。

现在我想执行一个插入功能的存储过程,试了几次都没有成功。如果那位有这样的成功经验愿请教!

以前做过用JAVA的JDBC执行存储过程,但即然都用Hiberante了。就不想再做一个数据库连接,想把这块都交给Hibernate管理。后来想到可以从Hibernate的Session 中再得到Connection啊,这样不就可以象在JDBC中一样执行存储过程了吗?一试,果然灵验。

代码:

存储过程自己写了。我用的MS SQL Server 2000

java code :

Session session = HibernateUtil.getSession(); //得到session
Transaction tx = session.beginTransaction(); //开始事务
Connection con = session.connection(); //从Session 中得到Connection
String procedure = "{call insertbankDate(?) }"; //存储过程名,?是参数的位置,如果有多个参数就加多个?
CallableStatement cstmt = con.prepareCall(procedure); //这句可能是得到可以执行存储过程的Statement 从网上查到的
cstmt.setString(1, "02"); //设置参数
cstmt.executeUpdate();
tx.commit();

好了。现在你的存储过程就可以Hibernate中执行了!
------------------------------------------------------------------------------------------------------

如果底层数据库(如Oracle)支持存储过程,也可以通过存储过程来执行批量更新。存储过程直接在数据库中运行,速度更加快。在Oracle数据库中可以定义一个名为batchUpdateStudent()的存储过程,代码如下:

create or replace procedure batchUpdateStudent(p_age in number) as
begin
update STUDENT set AGE=AGE+1 where AGE>p_age;
end;

以上存储过程有一个参数p_age,代表学生的年龄,应用程序可按照以下方式调用存储过程:

tx = session.beginTransaction();
Connection con=session.connection();

String procedure = "{call batchUpdateStudent(?) }";
CallableStatement cstmt = con.prepareCall(procedure);
cstmt.setInt(1,0); //把年龄参数设为0
cstmt.executeUpdate();
tx.commit();

在以上代码中,我用的是Hibernate的 Transaction接口来声明事务,而不是采用JDBC API来声明事务。

分享到:
评论

相关推荐

    hibernate调用存储过程

    hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程

    Hibernate存储过程的调用

    ### Hibernate存储过程调用详解 #### 一、概述 在软件开发过程中,为了提高数据库操作的性能和安全性,经常会使用到存储过程。特别是在处理复杂的业务逻辑或者需要进行大量数据更新时,存储过程能够提供更好的解决...

    hibernate query调用oracle存储过程

    在Hibernate中,调用存储过程通常通过Session对象的createNativeQuery()方法实现,这个方法用于创建原生SQL查询,可以方便地调用数据库的自定义SQL或者存储过程。以下是一个简单的示例,展示了如何调用一个不带参数...

    hibernate框架调用存储过程

    本篇文章将深入探讨如何在Hibernate框架中调用存储过程,并与JDBC调用存储过程的方式进行比较。 首先,我们要了解存储过程是什么。存储过程是预编译的SQL语句集合,存储在数据库服务器中,可被多次调用,减少了网络...

    Hibernate 存储过程的调用.doc

    首先,我们需要了解Hibernate存储过程调用的基本概念。存储过程可以封装复杂的数据库操作,如多条SQL语句、条件判断等,然后通过一个名称来执行。在Hibernate中,我们可以使用XML映射文件或者注解的方式来调用存储...

    hibernate调用存储过程的方法调用

    Hibernate作为Java领域内广泛使用的对象关系映射(ORM)框架,提供了调用数据库存储过程的能力。本文将深入探讨如何使用Hibernate调用存储过程,并结合提供的资源文件——`proc.sql`、`hibernateProc.sql`和`...

    hibernate调用存储过程具体方法

    hibernate本对数据库的操作有些不完美,有必要的时候可以调用存储过程来补足。

    hibernate环境搭建已经对应存储过程调用

    本文将深入探讨如何搭建Hibernate环境并进行存储过程的调用。 首先,让我们了解什么是Hibernate。Hibernate是一个开源的ORM框架,它允许Java开发者将Java类与数据库表进行映射,通过对象的方式来操作数据库。它提供...

    Hibernate 调用存储过程

    ### Hibernate调用存储过程详解 #### 一、建立存储过程 在进行Hibernate调用存储过程之前,首先需要在数据库中创建存储过程。本例中创建了一个名为`getUserInfo`的简单存储过程,其功能是从`user`表中选择所有记录...

    hibernate存储过程

    而"hibernate存储过程"是指使用Hibernate来调用数据库中的存储过程。存储过程是预编译的SQL语句集合,通常用于执行复杂的业务逻辑或提高数据库性能。以下将详细介绍Hibernate如何与存储过程进行交互,并提供相关知识...

    使用hibernate调用oracle的存储过程

    在hibernate中调用oracle中的存储过程的详细代码。可以借鉴使用,帮助学习。

    spring hibernate执行存储过程的例子

    结合Spring和Hibernate,你可以在Spring的Service层使用Hibernate的Session来调用存储过程,或者在Repository层通过JdbcTemplate或NamedParameterJdbcTemplate进行调用。具体选择哪种方式取决于你的项目结构和需求。...

    Hibernate使用存储过程

    在Hibernate中调用这个存储过程,我们需要创建一个事务,获取数据库连接,然后通过CallableStatement对象执行存储过程: ```java Transaction tx = session.beginTransaction(); Connection con = session....

    Hibernate3调用存储过程用法

    在Java的持久化框架Hibernate中,调用数据库的存储过程是一项常见的需求。本文将深入探讨在Hibernate3中如何实现这一功能,以及相关的知识点。 一、为什么要使用存储过程 存储过程是预编译的SQL语句集合,它们在...

    Hibernate --调用存储过程(全).docx

    Hibernate,作为一个流行的Java对象关系映射(ORM)框架,虽然主要关注对象的持久化,但也提供了调用存储过程的能力。下面我们将详细探讨如何在Hibernate中调用存储过程。 首先,我们需要创建一个存储过程。例如,...

    hibernate调用存储过程.docx

    总之,Hibernate不仅支持简单的ORM操作,还提供了调用存储过程和定义命名SQL查询的能力,使得开发者可以灵活地处理各种数据库交互需求,提高代码的灵活性和可维护性。在实际开发中,理解并熟练掌握这些特性,将有助...

Global site tag (gtag.js) - Google Analytics