转载自: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();
- SQLQuery query = session.createSQLQuery("{Call proc(?)}");
-
query.setString(0, 参数);
- List list =query.list();
分享到:
相关推荐
Hibernate,作为一个流行的Java对象关系映射(ORM)框架,虽然主要关注对象的持久化,但也提供了调用存储过程的能力。下面我们将详细探讨如何在Hibernate中调用存储过程。 首先,我们需要创建一个存储过程。例如,...
hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程
而存储过程的调用则扩展了Hibernate的功能,使得开发者可以直接通过ORM层执行数据库的自定义操作。 此外,4.3.5版本还优化了性能,例如,对懒加载机制的改进减少了不必要的数据库查询,提升了应用的响应速度。同时...
在Java开发环境中,与KingbaseV8数据库进行交互通常会用到Hibernate框架和JDBC驱动。 Hibernate是一个优秀的对象关系映射(ORM)框架,它简化了Java应用程序对数据库的操作,通过将Java对象与数据库表进行映射,...
Hibernate Validator 5.0.1.Final版本对性能进行了优化,包括缓存验证元数据、减少不必要的反射调用等,提高了验证速度。 通过深入理解Hibernate Validator的源码,我们可以更好地利用其特性,提高代码质量,减少...
11. **存储过程(Stored Procedures)**:支持调用数据库的存储过程,通过@NamedStoredProcedureQuery注解进行定义。 12. **二级缓存(Second-Level Cache)**:提高性能,缓存已加载的实体,减少对数据库的访问。 ...
6. **分布式搜索**:在大型系统中,Hibernate Search支持分布式的索引存储和查询,提升系统的可扩展性。 三、核心概念 - **Entity Indexing**:对Java实体进行索引,每个实体实例都会在搜索引擎中对应一个文档。 - ...
例如,调用 Session 的 save() 或 persist() 方法可以将新对象保存到数据库,update() 方法用于更新已存在的对象。 5. **查询语言(HQL)**:Hibernate 查询语言(HQL)是一种面向对象的查询语言,类似于 SQL,但...
在Hibernate中,调用存储过程通常通过Session对象的createNativeQuery()方法实现,这个方法用于创建原生SQL查询,可以方便地调用数据库的自定义SQL或者存储过程。以下是一个简单的示例,展示了如何调用一个不带参数...
Hibernate Validator 是 Hibernate 社区提供的一款强大的Java Bean验证框架,它基于JSR-303(Bean Validation)标准,为开发者提供了便捷的验证API,使得数据验证过程更为高效且易于维护。本文将深入探讨Hibernate ...
1. **JPA 2.1支持**: Hibernate 4.3.5.Final对Java Persistence API(JPA)2.1标准提供了全面支持,引入了新的特性和改进,如存储过程的调用、延迟加载的增强等。 2. **Criteria API增强**: Criteria API是...
2. **配置**:在Hibernate配置文件中启用Hibernate Search,并指定索引存储位置。 3. **索引实体**:在需要全文搜索的实体类上添加@Indexed和@Field等注解。 4. **搜索**:在业务逻辑中调用FullTextSession的search...
4. **校验上下文**:验证上下文(ValidationContext)用于启动验证过程,可以添加组、获取验证结果等。 三、使用步骤 1. **引入依赖**:在项目中添加Hibernate Validator的依赖,通常通过Maven或Gradle来管理。 2...
总结来说,Hibernate调用存储过程是通过`StoredProcedureQuery`对象实现的,提供了更简便的对象化API。对比JDBC,Hibernate更注重开发者体验,而JDBC则更适合对数据库操作有深度控制的需求。在实际开发中,根据项目...
### Hibernate调用存储过程详解 #### 一、建立存储过程 在进行Hibernate调用存储过程之前,首先需要在数据库中创建存储过程。本例中创建了一个名为`getUserInfo`的简单存储过程,其功能是从`user`表中选择所有记录...
本文将深入探讨如何使用Hibernate调用存储过程,并结合提供的资源文件——`proc.sql`、`hibernateProc.sql`和`hibernateProc.java`,来阐述具体的操作步骤和注意事项。 首先,我们理解存储过程的意义。存储过程可以...
例如,你可以使用以下代码片段来调用存储过程: ```java Session session = sessionFactory.openSession(); session.doWork(new Work() { @Override public void execute(Connection connection) throws ...
hibernate本对数据库的操作有些不完美,有必要的时候可以调用存储过程来补足。