`
finch
  • 浏览: 9014 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

hibernate是否支持视图以及存储过程

阅读更多
hibernate是否支持视图以及存储过程呢?
 

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();   
 
分享到:
评论

相关推荐

    Hibernate_Tools_for_eclipse_HbmTool.rar

    打开Hibernate视图找到Hibernate运行图标下的Hibernate Code Generation Configurations,如果找不到这个图标说明没有在Hibernate视图下。 配置一个新的配置项,输入配置项的名称MyHibernateCode,选择Hibernate ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    2.1.2 MVC模式的处理过程 2.2 Model规范 2.2.1 Model1规范 2.2.2 Model2规范 2.3 使用MVC的优劣 2.3.1 使用MVC模式的好处 2.3.2 使用MVC模式的不足之处 2.4 目前市场上常见的轻量级J2EE开发容器 2.5 小结 第二篇 ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    2.1.2 MVC模式的处理过程 2.2 Model规范 2.2.1 Model1规范 2.2.2 Model2规范 2.3 使用MVC的优劣 2.3.1 使用MVC模式的好处 2.3.2 使用MVC模式的不足之处 2.4 目前市场上常见的轻量级J2EE开发容器 2.5 小结 第二篇 ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    2.1.2 MVC模式的处理过程 2.2 Model规范 2.2.1 Model1规范 2.2.2 Model2规范 2.3 使用MVC的优劣 2.3.1 使用MVC模式的好处 2.3.2 使用MVC模式的不足之处 2.4 目前市场上常见的轻量级J2EE开发容器 2.5 小结 第二篇 ...

    网上书店(struts+hibernate+css+mysql).rar

    在技术实现方面,Struts框架负责处理用户的请求和响应,将业务逻辑与视图分离,使得代码结构更加清晰。Hibernate框架则负责处理数据持久化,将对象与数据库表进行映射,简化了数据库操作。CSS用于美化网页界面,提高...

    移动ssh项目(struts+spring+hibernate+oracle)130222.rar

    130222.rar文件是一个精心打包的计算机专业JSP源码资料包,它集成了当前流行的Web开发框架:Struts, Spring, Hibernate以及Oracle数据库。此项目资料包为开发者提供了一个全面的、可立即部署的开发环境,旨在帮助...

    项目申报系统(Struts2+Spring+Hibernate+Jsp+Mysql5)130223.rar

    Struts2作为MVC框架,负责处理页面请求和响应,将业务逻辑与视图分离,提高了代码的可维护性和可扩展性。Spring作为IoC容器,负责管理对象的生命周期和依赖关系,降低了代码的耦合度。Hibernate作为ORM框架,负责将...

    网上书店(struts+hibernate+css+mysql)130223.rar

    通过这个项目,你可以学习到如何使用Struts框架进行MVC(模型-视图-控制器)模式的开发,以及如何使用Hibernate技术实现对象关系映射(ORM),从而简化数据库操作。此外,这个项目还使用了CSS样式表来美化网页界面,...

    基于struts+hibernate+spring+easyui+mysql的网上商城项目实战源码.zip

    MySQL拥有庞大的开发者社区和丰富的第三方插件、库、中间件支持,提供了丰富的文档、教程、论坛以及专业服务,极大地简化了开发、运维和故障排查过程。 关键组件与日志 系统数据库 MySQL内部包含几个特殊的系统...

    Struts2项目综合案例

    其中dataInsert.sql是建表、视图sql,存储过程是批量插入测试数据,具体注意事项请看readme.txt文件。本压缩包仅有源代码和配置文件,相关运行的jar包需自己调式加入,如有问题,请发邮件或加我MSN:yetree@hotmail....

    健身俱乐部Web网站-JSP+Servlet+Hibernate+jQuery+Ajax

    扣除月供由一个SQL存储过程完成。 2.Cookie记住密码 3.活动海报提供点击看大图功能 4.添加活动的日期用jQuery日期插件(datepicker) 5.为表格添加更多的CSS样式,让表格更美观点 6.某些页面应该提供分页显示(时间紧...

    Java数据库技术详解 DOC简版

    6.2 CallableStatement存储过程对象 6.3 BatchedUpdate对象 6.4 Rowset行集合对象 6.5 JDBC的事务 6.6 本章小结 第7章 JDBC结合Servlet与JSP 的应用 7.1 Servlet概述 7.2 JDBC在Servlet中的使用 7.3...

    java_jsp项目源码_网上书店(struts+hibernate+css+mysql)130223.rar

    1. 采用Struts2作为MVC框架,实现了模型、视图、控制器的分离,提高了代码的可维护性和可扩展性。 2. 使用Hibernate作为ORM框架,实现了对数据库的抽象和封装,简化了数据库操作。 3. 采用MySQL作为数据库存储,具有...

    oracle 入门很简单.zip

    目录 第1章数据库简介ppt ...第17章函数与存储过程ppt 第18章数据车性能优化.ppt 第l9章数据库一致性与事务管理。ppt 第20章并发控制.ppt 第2l章Oracle在开发中的应用ppt 第22章Oracle+Hibernate应用实例.ppt

    免费计算机毕业设计-基于JavaEE的医院病历管理系统设计与实现(包含论文+源码)

    系统利用Spring框架进行业务逻辑处理和事务管理,通过Spring MVC实现模型-视图-控制器(MVC)模式,以及使用MyBatis或Hibernate等ORM工具与数据库交互。主要功能包括患者信息管理、电子病历编辑与存储、医疗记录查询...

    MySQL 6 绿色精简BAT版 2.24 MB

    2008-07-02 http://beansoft.blogjava.net/ &lt;br&gt;&lt;br&gt; MySQL 6 支持外键,视图存储过程,事务等功能(绿色精简版测试通过,支持这些功能),非常方便进行开发(尤其是MyEclipse生成一对多,多对多的Hibernate/JPA映射...

    Java Web程序设计教程

    14.2.1spring对hibernate的支持 279 14.2.2管理sessionfactory 279 14.2.3hibernate的dao实现 281 14.2.4使用hibernatetemplate 281 14.2.5管理hibernate事务 282 14.3项目实战——学生成绩查询系统 283 本章...

    Travel-Agency-Java-EE-:一个基于 Web 的应用程序,它使用 MVC 实现(模型-视图-控制器),旨在让用户只需点击几下即可连接到应用程序并预​​订他们的座位或房间。前端受到损害,因为后端工作更多在这个项目中很重要

    旅行社-Java-EE- 一个基于 Web 的应用程序,它使用 MVC 实现(模型-视图-控制器),旨在让用户... 该项目中使用的技术是通过MVC(模型-视图-控制器)实现连接到后端的JSP页面,并且使用hibernate将数据存储在数据库中。

    Spring中文帮助文档

    对视图的支持:RequestToViewNameTranslator 13.12. 基于注解的控制器配置 13.12.1. 建立dispatcher实现注解支持 13.12.2. 使用@Controller定义一个控制器 13.12.3. 使用@RequestMapping映射请求 13.12.4. ...

    Spring API

    对视图的支持:RequestToViewNameTranslator 13.12. 基于注解的控制器配置 13.12.1. 建立dispatcher实现注解支持 13.12.2. 使用@Controller定义一个控制器 13.12.3. 使用@RequestMapping映射请求 13.12.4. ...

Global site tag (gtag.js) - Google Analytics