`
Dream.V
  • 浏览: 32599 次
社区版块
存档分类
最新评论

Hibernate调用Oracle的存储过程

 
阅读更多

  众所周知,当过多的使用存储过程,触发器等 数据库方言相关的应用时,应用程序的移植性会变差,特别是在Hibernate中使用这些,简直是讽刺,但是当今中国又有哪家公司做项目会关心应用程序的移植性呢?

  现在看看Hibernate中对Oracle存储过程的调用.

  1.plsql 代码

  

proc.plsql
create Procedure proc()
begin
      select * from proctab;
end;

1 create procedure  proc1(v_no number(4))
2 begin
3     select * from proc1
4    where id=v_no;
5 end;

   2.Hibernate 存储过程调用的一种方法是,通过XML传统的映射方式去调用。

-》存储过程映射和领域模型中的实体的对应关系

  

xml映射文件
复制代码
 1 <class name="com.test.User" table="proctab">     
 2         <id name="id" column="id">     
 3             <generator class="native"/>     
 4         </id>     
 5         <property name="name" column="name" type="string" />     
 6         <property name="age" column="age" type="integer" />     
 7 </class>     
 8    <sql-query name="getUser" callable="true">     
 9      <return alias="user" class="com.test.User">     
10      <return-property name="id" column="id" />     
11      <return-property name="name" column="name" />     
12      <return-property name="age" column="age" />     
13      </return>     
14      {call proc()}     
15    </sql-query>    
复制代码

-》Hibernate API 对存储过程的调用

Hibernate API code
复制代码
1 Session ss= HibernateSessionFactory.getSession()     
2 List li=ss.getNamedQuery("getUser").list();     
3 ss.close();    
4  
5         Session ss= HibernateSessionFactory.getSession()  
6         List li=ss.getNamedQuery("getUser").list();  
7         ss.close(); 
复制代码

-》JDBC API 对存储过程的调用

jdbc 调用
复制代码
 1 Session session =HibernateSessionFactory.getSession();      
 2 Connection conn = session.connection();      
 3 ResultSet rs =null;     
 4 CallableStatement call = conn.prepareCall("{Call proc()}");     
 5 rs = call.executeQuery();     
 6 rs.close();     
 7 session.close();    
 8  
 9 Session session =HibernateSessionFactory.getSession();   
10 Connection conn = session.connection();   
11 ResultSet rs =null;  
12 CallableStatement call = conn.prepareCall("{Call proc()}");  
13 rs = call.executeQuery();  
14 rs.close();  
15 session.close(); 
复制代码

  -》直接使用 Hibernate createQuerySql调用存储过程

createSqlQuery
复制代码
1 Session session =HibernateSessionFactory.getSession();      
2 SQLQuery query = session.createSQLQuery("{Call proc()}");     
3 List list =query.list();     
4 session.close();    
5  
6 Session session =HibernateSessionFactory.getSession();   
7 SQLQuery query = session.createSQLQuery("{Call proc()}");  
8 List list =query.list();  
9 session.close(); 
复制代码

-》通过Hibernate API或者JDBC,API给存储过程传参

传参1
复制代码
1 CallableStatement call = conn.prepareCall("{Call proc(?)}");     
2 call.setString(1, 参数);     
3 rs = call.executeQuery();    
4  
5 CallableStatement call = conn.prepareCall("{Call proc(?)}");  
6 call.setString(1, 参数);  
7 rs = call.executeQuery(); 
复制代码
传参2
1 SQLQuery query = session.createSQLQuery("{Call proc(?)}");     
2 query.setString(0, 参数);     
3 List list =query.list();   
分享到:
评论

相关推荐

    hibernate query调用oracle存储过程

    以下是一个简单的示例,展示了如何调用一个不带参数的Oracle存储过程: ```java Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); session....

    使用hibernate调用oracle的存储过程

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

    oracle存储过程学习经典入门

    本文将从 Oracle 存储过程的基础知识开始,逐步深入到 Oracle 存储过程的高级应用,包括 Hibernate 调用 Oracle 存储过程和 Java 调用 Oracle 存储过程的方法。 Oracle 存储过程基础知识 Oracle 存储过程是 Oracle...

    Java调用oracle存储过程通过游标返回临时表

    本篇文章将深入探讨如何使用Java调用Oracle存储过程,并通过游标获取存储过程中返回的临时表数据。 首先,Oracle存储过程是一种在数据库端执行的预编译SQL语句和PL/SQL代码集合。它可以接收参数、执行业务逻辑并...

    oracle存储过程学习经典[语法+实例+调用].doc

    - **Hibernate调用Oracle存储过程**:Hibernate框架支持调用存储过程,通过映射配置文件或注解指定存储过程的调用方式。 - **用Java调用Oracle存储过程**:使用`CallableStatement`接口来调用存储过程,设置输入...

    Oracle PlSql 存储过程

    调用 Oracle 存储过程需要使用 Hibernate 的存储过程调用机制。 七、 用 Java 调用 Oracle 存储过程总结 用 Java 调用 Oracle 存储过程可以使用 JDBC 或 Oracle 的java驱动程序。下面是用 Java 调用 Oracle 存储...

    hibernate 调用oracle函数

    总的来说,Hibernate调用Oracle函数涉及到了数据库设计、ORM框架的使用、原生SQL查询和结果映射等多个方面,熟练掌握这些技能对于开发高质量的企业级应用至关重要。希望这篇文章能帮助你更好地理解和应用这些知识。

    oracle存储过程学习经典[语法+实例+调用]

    Hibernate调用Oracle存储过程涉及到使用Hibernate框架来实现JDBC操作。在Java中调用Oracle存储过程可以通过JDBC API来完成。在调用时,可以根据存储过程是否有返回值来进行区分处理。无返回值的存储过程只需要执行...

    oracle存储过程学习经典[语法+实例+调用].docx

    4. **Hibernate调用Oracle存储过程** Hibernate作为Java持久层框架,可通过`Session.createSQLQuery()`或`StoredProcedureQuery`来调用存储过程。 - 无返回值的存储过程:直接执行不获取结果。 - 有返回值的存储...

    Oracle+PlSql存储过程

    6. 通过Hibernate调用Oracle存储过程,需要配置和编写映射元数据,以便ORM框架能够正确地调用和处理返回值。 7. 使用Java调用Oracle存储过程分为三种情况:无返回值的过程、有单个返回值的过程和返回列表的过程。 *...

    Spring boot调用Oracle存储过程的两种方式及完整代码

    在 Spring Boot 项目中,我们也可以使用 Hibernate 的 SessionFactory 来获取 Session,然后使用 Session 来调用 Oracle 存储过程。下面是一个示例代码: ```java @Repository public class ProdureDAO { @...

    2022oracle存储过程procedure秘籍参照.pdf

    4. **Hibernate调用Oracle存储过程**:ORM框架如Hibernate可以调用存储过程,分为无返回值、有返回值和返回列表的存储过程。无返回值的过程直接调用,有返回值的过程通过`CallableStatement`的`registerOutParameter...

    oracle_存储过程详解

    - Hibernate调用Oracle存储过程需要配置JDBC驱动,并使用`CallableStatement`来执行存储过程。 4. Java调用Oracle存储过程: - 无返回值的存储过程:使用`CallableStatement`的`execute()`方法。 - 有返回值的非...

    oracle存储过程(语法+实例).docx

    以下是对Oracle存储过程的详细解释和实例分析。 1. **Oracle 存储过程基础知识** - 存储过程由PL/SQL(Procedural Language/SQL)编写,它结合了SQL的查询能力与编程语言的控制结构。 - 存储过程可以接受参数,...

    存储过程学习经典[语法+实例+调用]

    Hibernate调用Oracle存储过程 Hibernate框架支持直接调用存储过程,通过配置映射文件或注解实现。 ##### 2. Java直接调用Oracle存储过程 使用Java JDBC API可以直接调用Oracle存储过程,通过`CallableStatement`...

    Oracle存储过程

    6. Hibernate调用Oracle存储过程: 在Java应用中,使用Hibernate框架可以方便地调用Oracle存储过程。如示例所示,通过`getHibernateTemplate().execute()`方法传递一个`HibernateCallback`,然后在回调方法中创建并...

    Oracle PlSql存储过程

    **Java和Hibernate调用Oracle存储过程** 1. **无返回值的存储过程**:Java通过JDBC的`CallableStatement`调用,设置参数并执行`{call procedure_name(?, ?)}`。 2. **有返回值的存储过程**:对于单个返回值,可以...

    oracle存储过程学习经典

    5. **调用Oracle存储过程**:通过Java或Hibernate等工具调用Oracle存储过程,需要注意参数传递和结果集的处理。 #### 动态SQL与存储过程 在存储过程中执行动态SQL,有两种主要方式: 1. **本地动态SQL**:适用于...

Global site tag (gtag.js) - Google Analytics