`

Hibernate --调用存储过程

阅读更多

 转载自:http://www.iteye.com/topic/176032

HIbernate 调用存储过程

CREATE   TABLE  `proctab` (
`id`  int ( 11 )  NOT   NULL  auto_increment,
`Name`  varchar ( 20 ),
`age`  int ( 11 ),
PRIMARY   KEY   (`id`)
)


简单的存储过程

 

create   PROCEDURE  proc()
 begin
    select   *   from  proctab;
 end ; 


一种方法是通过hibernate传统的xml映射方式去调用

<class name="com.test.User" table="proctab">
        <id name="id" column="id">
            <generator class="native"/>
        </id>
        <property name="name" column="name" type="string" />
        <property name="age" column="age" type="integer" />
</class>
   <sql-query name="getUser" callable="true">
     <return alias="user" class="com.test.User">
     <return-property name="id" column="id" />
     <return-property name="name" column="name" />
     <return-property name="age" column="age" />
     </return>
     {call proc()}
   </sql-query>


调用方法

 
        Session ss= HibernateSessionFactory.getSession()
        List li=ss.getNamedQuery("getUser").list();
        ss.close();


及其类似jdbc的方法

Session session =HibernateSessionFactory.getSession(); 
Connection conn = session.connection(); 
ResultSet rs =null;
CallableStatement call = conn.prepareCall("{Call proc()}");
rs = call.executeQuery();
rs.close();
session.close();


这种方法基本上就是jdbc,不过很简单,总是感觉怪怪的~!

还有就是通过强大的createSQLQuery来实现
o(∩_∩)o...哈哈  个人比较喜欢这种方法

Session session =HibernateSessionFactory.getSession(); 
SQLQuery query = session.createSQLQuery("{Call proc()}");
List list =query.list();
session.close();


如果没有返回值 直接用execute的方法就可以了
(*^__^*)  忘了一个重要的问题就是存储过程的传参问题

CallableStatement call = conn.prepareCall("{Call proc(?)}");
call.setString(1, 参数);
rs = call.executeQuery();

 

Java代码
  1. SQLQuery query = session.createSQLQuery("{Call proc(?)}");   
  2. query.setString(0, 参数);   
  3. List list =query.list();  
分享到:
评论
1 楼 dong717 2009-08-21  
这种方式调用存储过程我第一次看到!以前没有见过!看上很好用!谢谢!受教了!

相关推荐

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

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

    hibernate调用存储过程

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

    hibernate-release-4.3.5

    而存储过程的调用则扩展了Hibernate的功能,使得开发者可以直接通过ORM层执行数据库的自定义操作。 此外,4.3.5版本还优化了性能,例如,对懒加载机制的改进减少了不必要的数据库查询,提升了应用的响应速度。同时...

    kingbaseV8 hibernate jdbc 驱动

    在Java开发环境中,与KingbaseV8数据库进行交互通常会用到Hibernate框架和JDBC驱动。 Hibernate是一个优秀的对象关系映射(ORM)框架,它简化了Java应用程序对数据库的操作,通过将Java对象与数据库表进行映射,...

    hibernate-validator-5.0.1.final-sources.jar源码

    Hibernate Validator 5.0.1.Final版本对性能进行了优化,包括缓存验证元数据、减少不必要的反射调用等,提高了验证速度。 通过深入理解Hibernate Validator的源码,我们可以更好地利用其特性,提高代码质量,减少...

    hibernate-jpa-2.1-api 1.0.0.Final API

    11. **存储过程(Stored Procedures)**:支持调用数据库的存储过程,通过@NamedStoredProcedureQuery注解进行定义。 12. **二级缓存(Second-Level Cache)**:提高性能,缓存已加载的实体,减少对数据库的访问。 ...

    hibernate-search-5.5.1.Final-dist.zip

    6. **分布式搜索**:在大型系统中,Hibernate Search支持分布式的索引存储和查询,提升系统的可扩展性。 三、核心概念 - **Entity Indexing**:对Java实体进行索引,每个实体实例都会在搜索引擎中对应一个文档。 - ...

    Hibernate-3.2源码包

    例如,调用 Session 的 save() 或 persist() 方法可以将新对象保存到数据库,update() 方法用于更新已存在的对象。 5. **查询语言(HQL)**:Hibernate 查询语言(HQL)是一种面向对象的查询语言,类似于 SQL,但...

    hibernate query调用oracle存储过程

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

    hibernate-validator-5.2.1.Final-dist

    Hibernate Validator 是 Hibernate 社区提供的一款强大的Java Bean验证框架,它基于JSR-303(Bean Validation)标准,为开发者提供了便捷的验证API,使得数据验证过程更为高效且易于维护。本文将深入探讨Hibernate ...

    hibernate-release-4.3.5.Final.zip

    1. **JPA 2.1支持**: Hibernate 4.3.5.Final对Java Persistence API(JPA)2.1标准提供了全面支持,引入了新的特性和改进,如存储过程的调用、延迟加载的增强等。 2. **Criteria API增强**: Criteria API是...

    hibernate-search-5.1.1.Final-dist.zip

    2. **配置**:在Hibernate配置文件中启用Hibernate Search,并指定索引存储位置。 3. **索引实体**:在需要全文搜索的实体类上添加@Indexed和@Field等注解。 4. **搜索**:在业务逻辑中调用FullTextSession的search...

    hibernate-validator-5.4.0.Final-dist.zip

    4. **校验上下文**:验证上下文(ValidationContext)用于启动验证过程,可以添加组、获取验证结果等。 三、使用步骤 1. **引入依赖**:在项目中添加Hibernate Validator的依赖,通常通过Maven或Gradle来管理。 2...

    hibernate框架调用存储过程

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

    Hibernate 调用存储过程

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

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

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

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

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

    hibernate调用存储过程具体方法

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

Global site tag (gtag.js) - Google Analytics