`

Hibernate3调用存储过程用法

 
阅读更多

直接以一个例子在说明,如DB2中有一个简单存储过程 selectAllUsers

1. CREATE procedure selectAllUsers
2. DYNAMIC RESULT SETS 1
3. BEGIN
4. DECLARE temp_cursor1 CURSOR WITH RETURN TO CLIENT FOR
5. SELECT * FROM test;
6. OPEN temp_cursor1;
7. END ;


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

01. < hibernate-mapping package = "com.unmi.vo" >
02. < class name = "Test" table = "TEST" >
03.      ............
04. </ class >
05.
06. < sql-query callable = "true" name = "selectAllUsers" >
07. < return alias = "aa" class = "Test" >
08. < return-property name = "oborqt" column = "OBORQT" />
09. < return-property name = "moorqt" column = "MOORQT" />
10. < return-property name = "roschn" column = "ROSCHN" />
11. < return-property name = "plandate" column = "PLANDATE" />
12. </ return >
13. { ? = call selectAllUsers() }
14. </ sql-query >
15. </ hibernate-mapping >


{?=callselectAllUsers()}也可以写成{callselectAllUsers()},

如果有参数就写成 {?=callselectAllUsers(?,?,?)}

代码中对query设置相应位置上的值就OK,如

query.setInteger(1,100);
query.setString(2,"Unmi");
query.setDate(3,new Date());

Java调用关键代码如下

1. Session session = HibernateUtil.currentSession();
2. Query query = session.getNamedQuery( "selectAllUsers" );
3. List list = query.list();
4. System.out.println(list);


要求你的存储过程必须能返回记录集,否则要出错
如果你的存储过程是完成非查询任务就应该在配置文件用以下三个标签

1. < sql-insert callable = "true" >{call createPerson (?, ?)}</ sql-insert >
2. < sql-delete callable = "true" >{? = call deletePerson (?)}</ sql-delete >
3. < sql-update callable = "true" >{? = call updatePerson (?, ?)}</ sql-update >


有一点不好的地方就是调用存储过程获取记录集时,不能对Query使用
setFirstResult(int)和setMaxResults(int)方法来分页

分享到:
评论

相关推荐

    1、hibernate调用存储过程1

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

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

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

    Hibernate工作原理及为什么要用

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

    自学oracle存储过程

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

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

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

    Hibernate实战(第2版 中文高清版)

     8.2.2 整合存储过程和函数   8.3 改进Schema DDL   8.3.1 定制SQL名称和数据类型   8.3.2 确保数据一致性   8.3.3 添加领域约束和列约束   8.3.4 表级约束   8.3.5 数据库约束   8.3.6 创建索引  ...

    精通 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...

    搞定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精华教程

    3)通常将每一个Session实例和一个DB事务邦定,也就是说,每执行一个DB事务,都应该先创建一个新的Session实例,不论事务执行成功与否,最后都应该调用Session的close()方法,从而释放Session实例占用的资源。...

    精通 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)类型...

    搞定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...

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

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

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

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

    最新JAVA面试题总结之数据库.docx

    存储过程是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。创建存储过程的例子如创建一个简单的 MySQL 存储过程,名为...

    低清版 大型门户网站是这样炼成的.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 ...

    iBATIS技术教程PPT和代码.rar

    程序员甚至不需要对 SQL 的熟练掌握, Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的 SQL 并调用 JDBC 接口加以执行。 系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的SQL...

Global site tag (gtag.js) - Google Analytics