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

Hibernate3调用存储过程用法 - [原创]

DB2 
阅读更多
DB2中简单存储过程 selectAllUsers

CREATE  procedure selectAllUsers 
DYNAMIC RESULT SETS 1
BEGIN 
      DECLARE temp_cursor1 CURSOR  WITH RETURN TO CLIENT  FOR 
      SELECT * FROM  test;   
      OPEN temp_cursor1;
END;

映射文件中关于存储过程内容如下

<hibernate-mapping package="com.unmi.vo">
    <class name="Test" table="TEST">
     ............
    </class>

    <sql-query callable="true" name="selectAllUsers">
<return alias="aa" class="Test">
    <return-property name="oborqt" column="OBORQT"/>
    <return-property name="moorqt" column="MOORQT"/>
    <return-property name="roschn" column="ROSCHN"/>
    <return-property name="plandate" column="PLANDATE"/>
</return>
{ ? = call selectAllUsers() }
    </sql-query>
</hibernate-mapping>

{ ? = call selectAllUsers() } 也可以写成{ call selectAllUsers() },
如果有参数就写成
{ ? = call selectAllUsers(?,?,?) }
代码中对query设置相应位置上的值就OK

Java调用关键代码如下
      
  Session session = HibernateUtil.currentSession();
  Query query = session.getNamedQuery("selectAllUsers");
  List list = query.list();
  System.out.println(list);

要求你的存储过程必须能返回记录集,否则要出错
如果你的存储过程是完成非查询任务就应该在配置文件用以下三个标签
  <sql-insert callable="true">{call createPerson (?, ?)}</sql-insert>
  <sql-delete callable="true">{? = call deletePerson (?)}</sql-delete>
  <sql-update callable="true">{? = call updatePerson (?, ?)}</sql-update>

有一点不好的地方就是调用存储过程获取记录集时,不能对Query使用
setFirstResult(int)和setMaxResults(int)方法来分页
分享到:
评论
6 楼 javaeestart 2007-07-10  
我试了这个例子,不能执行啊
楼主,能上传一个能运行的工程吗?
5 楼 ray_linn 2007-05-28  
lljch 写道
楼主能够成功运行吗?我看有问题吧。再有,如果有参数,如{?=call myfunction(?,?,?)},参数该如何输入?能否给个详细的java调用写法,而不要"代码中对query设置相应位置上的值就OK"一句话就带过。



不错,找了个good point, 这个点上说得很草率。
4 楼 lljch 2007-05-28  
楼主能够成功运行吗?我看有问题吧。再有,如果有参数,如{?=call myfunction(?,?,?)},参数该如何输入?能否给个详细的java调用写法,而不要"代码中对query设置相应位置上的值就OK"一句话就带过。
3 楼 ppeter 2006-10-11  
hawkzhan 写道
这样调用存储过程的方法不好,不如饶过hibiernateAPI来搞


这样做和命名查询很类似,我想知道为什么说不好?
2 楼 hawkzhan 2006-09-28  
这样调用存储过程的方法不好,不如饶过hibiernateAPI来搞
1 楼 Freaky 2006-09-24  
youlong05 写道

要求你的存储过程必须能返回记录集,否则要出错


上面这句话是关键。

相关推荐

    Hibernate3调用存储过程用法

    在Java的持久化框架Hibernate中,调用数据库的存储过程是一项...以上就是Hibernate3调用存储过程的基本用法和相关知识点,希望对你理解并实际操作有所帮助。在实际项目中,应结合具体的业务需求和数据库特性灵活运用。

    hibernate query调用oracle存储过程

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

    hibernate框架调用存储过程

    总结来说,Hibernate调用存储过程是通过`StoredProcedureQuery`对象实现的,提供了更简便的对象化API。对比JDBC,Hibernate更注重开发者体验,而JDBC则更适合对数据库操作有深度控制的需求。在实际开发中,根据项目...

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

    本文将深入探讨如何使用Hibernate调用存储过程,并结合提供的资源文件——`proc.sql`、`hibernateProc.sql`和`hibernateProc.java`,来阐述具体的操作步骤和注意事项。 首先,我们理解存储过程的意义。存储过程可以...

    hibernate调用存储过程

    ### Hibernate调用存储过程详解 在企业级应用开发中,Hibernate作为一款优秀的对象关系映射(ORM)框架,被广泛应用于Java持久层解决方案。而存储过程作为一种预编译的SQL代码块,在数据库层面执行,提供了高性能的...

    Hibernate 调用存储过程

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

    存储过程- 06.在应用程序中调用存储过程

    - **ORM框架**:Object-Relational Mapping(ORM)框架如Hibernate和Entity Framework也支持调用存储过程,开发者可以在ORM的映射配置中指定存储过程,然后在代码中像调用普通方法一样调用它。 3. **参数传递** -...

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

    总的来说,Hibernate提供了多种方式来调用存储过程,可以根据具体需求和习惯选择合适的方法。通过XML映射、直接JDBC调用以及`createSQLQuery`,开发者可以灵活地在应用程序中集成存储过程,增强数据库操作的功能。

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

    例如,你可以使用以下代码片段来调用存储过程: ```java Session session = sessionFactory.openSession(); session.doWork(new Work() { @Override public void execute(Connection connection) throws ...

    Hibernate存储过程的调用

    #### 三、Hibernate调用存储过程的方法 在Hibernate中调用存储过程通常有两种方式:通过`Query`接口或使用`StoredProcedureQuery`。这里我们主要介绍使用`StoredProcedureQuery`的方式,因为这种方式更适合处理复杂...

    spring hibernate执行存储过程的例子

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

    hibernate存储过程

    - 使用Hibernate调用存储过程可以保持代码的统一性,但也可能导致封装性降低,因为存储过程的逻辑不再完全在Java代码中。 - 在处理大量数据或性能敏感的场景下,使用存储过程可能带来性能提升。 综上所述,...

    hibernate调用存储过程.docx

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

    hibernate调用存储过程知识.pdf

    总结来说,这篇文章深入浅出地介绍了如何在Hibernate 3.x中使用存储过程,涵盖了创建存储过程、在Java代码中调用存储过程的关键步骤,为开发者提供了清晰的实践指导。这对于那些希望在Java应用中充分利用数据库功能...

    hibernate调用存储过程[参考].pdf

    【hibernate调用存储过程】在软件开发中,尤其是涉及到数据库操作的Java应用中,Hibernate作为一款流行的ORM(对象关系映射)框架,能够极大地简化数据库操作。然而,有时我们可能需要使用到数据库的存储过程,这时...

    1、hibernate调用存储过程1

    本文将详细介绍如何使用Hibernate调用存储过程,包括不带参数返回值的存储过程和带参数返回值的存储过程。 1、调用不带参数返回值的存储过程 在提供的代码示例中,`doInHibernate` 方法展示了如何使用Hibernate...

    java-hibernate调用mysql过程和函数的方式知识.pdf

    调用 MySQL 过程和函数是 Java-Hibernate 框架中的一种重要技术,通过使用 CallableStatement 对象和 registerOutParameter() 方法,我们可以轻松地调用 MySQL 中的过程和函数,从而实现复杂的业务逻辑。

    NHibernate调用存储过程全集,值.

    在使用ORM(对象关系映射)框架如NHibernate时,虽然主要目的是通过面向对象的方式操作数据库,但有时仍需调用存储过程以实现特定功能或优化性能。本篇将详细讲解如何在NHibernate中配置和使用存储过程。 **1. ...

Global site tag (gtag.js) - Google Analytics