`
youlong05
  • 浏览: 146600 次
  • 性别: 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调用存储过程用法

    hibernate3调用存储过程的用法详细介绍。

    1、hibernate调用存储过程1

    1、使用hibernate调用不带参数返回值的存储过程方法public Boolean doInHibernate(Session session) t

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     9.6 通过Hibernate调用存储过程  9.7 小结  9.8 思考题 第10章 映射组成关系  10.1 建立精粒度对象模型  10.2 建立粗粒度关系数据模型  10.3 映射组成关系  10.3.1 区分值(Value)类型和实体(Entity)类型...

    Hibernate工作原理及为什么要用

    3. 调用 SessionFactory 创建 Session 的方法:可以通过用户自行提供 JDBC 连接或让 SessionFactory 提供连接来创建 Session。 二、Hibernate 的缓存体系 Hibernate 的缓存体系分为一级缓存和二级缓存: 1. 一级...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     9.6 通过Hibernate调用存储过程  9.7 小结  9.8 思考题 第10章 映射组成关系  10.1 建立精粒度对象模型  10.2 建立粗粒度关系数据模型  10.3 映射组成关系  10.3.1 区分值(Value)类型和实体(Entity)类型...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    6.3 Log4j的使用方法 6.3.1 配置Log4j 6.3.2 配置根Logger 6.3.3 指定日志输出位置 6.3.4 指定日志输出格式 6.3.5 指定日志输出优先级 6.3.6 在代码中使用Log4j 6.4 改进Log4j 6.5 小结 第七章 Ant使用指南 7.1 Ant...

    ssh(structs,spring,hibernate)框架中的上传下载

     文件数据存储在Blob类型的FILE_CONTENT表字段上,在Spring中采用OracleLobHandler来处理Lob字段(包括Clob和Blob),由于在程序中不需要引用到oracle数据驱动程序的具体类且屏蔽了不同数据库处理Lob字段方法上的...

    play framework 框架手册 word 版

    [强烈推荐, 文档不多, 很快就可以看完, 看完了, 就会使用play了] 目录 MVC应用程序模型 - 7 - app/controllers - 8 - app/models - 8 - app/views - 8 - 请求生命周期 - 8 - 标准应用程序布局layout - 9 - app...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    6.3 Log4j的使用方法 6.3.1 配置Log4j 6.3.2 配置根Logger 6.3.3 指定日志输出位置 6.3.4 指定日志输出格式 6.3.5 指定日志输出优先级 6.3.6 在代码中使用Log4j 6.4 改进Log4j 6.5 小结 第七章 Ant使用指南 7.1 Ant...

    hibernate精华教程

    使用hibernate编程步骤 1)配置环境,加载hibernate的jar文件,以及连接数据库连接使用的jar文件,并配置CLASSPATH环境变量。 2)写POJO类(普通的java类) 3)写hibernate所需的配置文件,hibernate.cfg.xml ,...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     9.6 通过Hibernate调用存储过程  9.7 小结  9.8 思考题 第10章 映射组成关系  10.1 建立精粒度对象模型  10.2 建立粗粒度关系数据模型  10.3 映射组成关系  10.3.1 区分值(Value)类型和实体(Entity)类型...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     9.6 通过Hibernate调用存储过程  9.7 小结  9.8 思考题 第10章 映射组成关系  10.1 建立精粒度对象模型  10.2 建立粗粒度关系数据模型  10.3 映射组成关系  10.3.1 区分值(Value)类型和实体(Entity)类型...

    play框架手册

    用hibernate持久化对象模型 - 69 - 保持模型stateless - 70 - 07.JPA持久化 - 70 - 启动JPA实体管理器 - 70 - 获取JPA实体管理器 - 70 - 事务管理 - 71 - play.db.jpa.Model支持类 - 71 - 为GenreicModel定制id映射 ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    6.3 Log4j的使用方法 6.3.1 配置Log4j 6.3.2 配置根Logger 6.3.3 指定日志输出位置 6.3.4 指定日志输出格式 6.3.5 指定日志输出优先级 6.3.6 在代码中使用Log4j 6.4 改进Log4j 6.5 小结 第七章 Ant使用指南 7.1 Ant...

    自学oracle存储过程

    6. Hibernate 调用 Oracle 存储过程..................................................................................... 6 用 Java 调用 Oracle 存储过程总结..................................................

    基于java,hibernate,mysql,GWT开发,采用分层设计的一个餐馆订餐管理系统

    中间层主要是为了方便ui层调用数据和存储数据设计的类; 数据库交互层主要是为了向中间层提供数据。 数据库交互层分为两小层: 其中一层的类和数据库中每一个表相对应并封装了一些数据库基本操作; 另外一层和...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    第二部分详细讲解了jsf ri、jta、jndi、rmi、jms、javamail、ejb 3的session bean、message driven bean、jpa、jax-ws 2、jaas等java ee知识,这部分知识以jsf+ejb 3+jpa整合开发为重点,通过使用netbeans ide工具...

    低清版 大型门户网站是这样炼成的.pdf

    5.12 hibernate调用存储过程 343 5.13 xml数据持久化 346 5.14 小结 348 第6章 充分利用spring 2.5的ioc利器统管bean世界 349 6.1 java程序员的春天厚礼—spring 2.5 349 6.1.1 爱上spring 2.5的十大理由 350 ...

    Java通用代码生成实用程序XDoclet(源码包)

    XDoclet 是一个通用的代码生成实用程序,是一个扩展的Javadoc Doclet引擎,它允许您使用象 JavaDoc 标记之 类的东西来向诸如类、方法和字段之类的语言特征添加元数据。随后,它利用这些额外的元数据来生成诸如部署...

Global site tag (gtag.js) - Google Analytics