Hibernate2支持视图,不支持存储过程
Hibernate3支持视图,也支持存储过程
1. 其实视图和表对于Hibernate来说,并无任何区别,你是如何应用表,就是如何应用视图。
2.Hibernate3调用存储过程
为了在Hibernate中使用存储过程,你必须遵循一些规则,不遵循这些规则的存储过程将不可用.如果你仍然想要使用他们,这些规则针对于不同的数据库.因为数据库提供商有各种不同的存储过程语法和语义:
(一)必须通过session.connection()
来执行他们。
(二)对存储过程进行的查询无法使用setFirstResult()/setMaxResults()
进行分页。
(三)对于Oracle有如下规则:
函数必须返回一个结果集。存储过程的第一个参数必须是OUT
,它返回一个结果集。这是通过Oracle 9或10的SYS_REFCURSOR
类型来完成的。在Oracle中你需要定义一个REF CURSOR
类型,参见Oracle的手册。
(四)对于Sybase或者MS SQL server有如下规则:
存储过程必须返回一个结果集。注意如果servers可能返回多个结果集以及更新的数目,Hibernate将取出第一条结果集作为它的返回值,其他将被丢弃。 如果你能够在存储过程里设定SET NOCOUNT ON
,这可能会效率更高,但这不是必需的。
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();
相关推荐
在迁移过程中,需要对表结构、索引、视图、存储过程等进行相应的调整,确保它们在新数据库中能正常工作。 7. **对UTF-8数据库的特殊处理** - 如果数据库支持UTF-8编码,确保所有字符串字段都设置为UTF-8格式。在...
运行项目,通过浏览器访问Action路径,检查是否成功调用存储过程并返回预期结果。 总结,Struts2调用存储过程涉及数据库连接、DAO设计、Action控制和视图展示等多个环节。通过合理配置和编程,我们可以有效地利用...
下面,我们将深入探讨这一主题,包括Struts框架的基础知识、如何在Struts中调用存储过程,以及存储过程在Struts应用中的具体作用。 ### Struts框架简介 Struts是Apache软件基金会的一个开源项目,它是一个基于MVC...
不过,如果你的存储过程返回的是复杂对象,你可以通过Hibernate的HQL(Hibernate Query Language)或Criteria API来映射这些结果到Java对象。 在描述中提到,示例代码可能需要根据你的具体数据库环境进行修改。这...
同时,需要确保数据库支持存储过程的调用。 2. **定义实体类和映射文件**:创建与表对应的Java实体类,以及对应的.hbm.xml映射文件。在映射文件中,可以使用`<sql-query>`或`<native-query>`元素来声明存储过程。 ...
需要注意的是,视图的映射可能会涉及到复合键的处理,以及可能需要自定义的`equals()`和`hashCode()`方法,确保对象的正确比较和存储。在实际应用中,根据项目的具体需求和所使用的框架特性,合理地运用这些技术能...
总结起来,"spring mvc+hibernate 图片存储至blob"这个主题涉及到Spring MVC处理文件上传、Hibernate将图片数据存入数据库BLOB字段、以及前后端交互等多个技术点。通过理解这些知识点,开发者可以构建一个完整的图片...
在这个项目中,"shiro 集成springmvc +hibernate mysql 登录认证以及授权"是将Shiro与Spring MVC和Hibernate集成,用于构建一个基于MySQL数据库的完整的用户登录认证和权限管理解决方案。 1. **Shiro**:Apache ...
Oracle提供了丰富的SQL扩展,以及PL/SQL编程语言,可以进行存储过程、触发器等高级数据库操作。 **整合SpringMVC、Hibernate和Oracle** 整合这三个组件,首先需要在项目中引入相应的库依赖,如SpringMVC和Hibernate...
这通常涉及到Ajax异步请求,利用Struts2的拦截器(Interceptor)和ActionContext,以及Hibernate3的Session查询。 1. **Struts2的配置**: - 配置Action:定义每个级联操作对应的Action,包括接收请求、处理业务...
MSSQL支持SQL标准,包括T-SQL(Transact-SQL)扩展,用于执行数据库操作、创建存储过程和触发器。在与SpringMVC或Hibernate集成时,MSSQL通常作为后端数据存储,通过JDBC(Java Database Connectivity)接口进行通信...
在Java应用中,使用Hibernate框架可以方便地调用Oracle存储过程。如示例所示,通过`getHibernateTemplate().execute()`方法传递一个`HibernateCallback`,然后在回调方法中创建并执行`CallableStatement`。这使得在...
6. **注解支持**: Hibernate 3引入了对Java Persistence API(JPA)注解的支持,如@Entity、@Table、@Id等,简化了对象的映射过程,使得代码更整洁。 7. **第一级缓存(First-Level Cache)**: 每个Session都有一个...
Controller处理业务逻辑,Model存储数据,View负责渲染视图,ViewModel则是数据和视图之间的桥梁。 Hibernate ORM框架允许开发人员用面向对象的方式处理数据库操作,避免了直接编写SQL语句的繁琐工作。它通过映射...
这个系统通常涉及用户交互、数据存储以及后端逻辑处理。在这个案例中,我们使用了Java服务器页面(JSP)作为视图层,Hibernate作为持久层框架来处理数据库操作,实现了留言板的功能。下面我们将深入探讨这两个技术...
由于项目中提到的jar包超过10MB,未包含在提供的压缩包中,这可能包括Struts、Hibernate、数据库驱动、以及其他依赖库。开发者需要自行下载并将其放入项目的`WEB-INF/lib`目录下,以确保项目的正常运行。 在实际...
这个过程中,Struts负责控制流程,而Hibernate则处理数据存储和检索。 通过学习和实践SHDemo,你不仅能掌握Struts和Hibernate的基础用法,还能了解如何将它们整合到同一个项目中,提高开发效率。在后续的开发中,你...
JSF是一种用于构建用户界面的MVC(模型-视图-控制器)框架,而Hibernate则是一个对象关系映射(ORM)工具,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。 **JavaServer Faces (JSF)** JSF是...