Hibernate3.x调用存储过程大揭密

三.编码与测试

在准备工作完成后,进入编码与测试阶段,本例演示了在hibernate3.0中调用mysql的存储过程的方法。

1、hibernate的配置文件

在hibernate的配置文件中包含数据库的连接信息,以及加入OR mapping的xml格式的映射文件,该文件如下(部分内容略):

……
  <property name="connection.url">jdbc:mysql://localhost:3306/test</property>
  <property name="connection.username">root</property>
  <property name="connection.password">root</property>
  <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
  <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
  <property name="show_sql">true</property>
  <mapping resource="com/amigo/proc/model/User.hbm.xml"/>
……

2、OR Mapping文件

产生的OR Mapping文件有User.java以及其对应的hibernate映射文件User.hbm.xml。其中User.java的内容如下:

public class User implements java.io.Serializable {
private static final long serialVersionUID = 1L;
/** 用户id*/
private String userid;
/** 用户姓名*/
private String name;
/** 用户blog*/
private String blog;
//省略get/set方法
}

User.hbm.xml文件的内容如下:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.amigo.proc.model">
   <class name="User" table="tbl_user">
     <id name="userid" column="userid">
       <generator class="assigned"/>
     </id>
     <property name="name" column="name" type="string" />
     <property name="blog" column="blog" type="string" />
   </class>
   <sql-query name="getUserList" callable="true">
  <return alias="user" class="User">
  <return-property name="userid" column="userid"/>
  <return-property name="name" column="name"/>
  <return-property name="blog" column="blog" />
  </return>
  {call getUserList()}
</sql-query>
</hibernate-mapping>

在该文件中需注意<sql-query…></sql-query>中的这段代码,调用的存储过程在其中定义,并定义了调用存储过程后将记录组装成User对象,同时对记录的字段与对象的属性进行相关映射。

时间: 2024-08-28 03:12:28

Hibernate3.x调用存储过程大揭密的相关文章

hibernate3.2调用存储过程

问题描述 今天写了个存储过程但不知道如何用hibernate3.2去调用它,在网上找了许久发现都是用*.bhm.xml进行配置的,但是我的工程用实体类通过注解去映射到数据库的字段的,希望大家帮帮我,谢谢了我写的存储过程是这样的//这是一个分页的存储过程create procedure page(@fenBy varchar(40), @pageSize varchar(40) , @pageIndex varchar(40), @tableName varchar(40))asbegindecl

解析在ASP.NET中调用存储过程的方法

在使用.NET的过程中,数据库访问是一个很重要的部分,特别是在B/S系统的构建过程中,数据库操作几乎成为了一个必不可少的操作.调用存储过程实现数据库操作使很多程序员使用的方法,而且大多数的程序员都是能使用存储过程就使用存储过程,很少直接使用SQL语句,所以存储过程是很有用而且很重要的. 存储过程简介 简单的说,存储过程是由一些SQL语句和控制语句组成的被封装起来的过程,它驻留在数据库中,可以被客户应用程序调用,也可以从另一个过程或触发器调用.它的参数可以被传递和返回.与应用程序中的函数过程类似,

Java 调用存储过程

存储过程 本文阐述了怎么使用DBMS存储过程.我阐述了使用存储过程的基本的和高级特性,比如返回ResultSet.本文假设你对DBMS和JDBC已经非常熟悉,也假设你能够毫无障碍地阅读其它语言写成的代码(即不是Java的语言),但是,并不要求你有任何存储过程的编程经历. 存储过程是指保存在数据库并在数据库端执行的程序.你可以使用特殊的语法在Java类中调用存储过程.在调用时,存储过程的名称及指定的参数通过JDBC连接发送给DBMS,执行存储过程并通过连接(如果有)返回结果. 使用存储过程拥有和使

在ASP.NET中调用存储过程方法新解

asp.net|存储过程 在使用.NET的过程中,数据库访问是一个很重要的部分,特别是在B/S系统的构建过程中,数据库操作几乎成为了一个必不可少的操作.调用存储过程实现数据库操作使很多程序员使用的方法,而且大多数的程序员都是能使用存储过程就使用存储过程,很少直接使用SQL语句,所以存储过程是很有用而且很重要的. 存储过程简介 简单的说,存储过程是由一些SQL语句和控制语句组成的被封装起来的过程,它驻留在数据库中,可以被客户应用程序调用,也可以从另一个过程或触发器调用.它的参数可以被传递和返回.与

asp.net调用存储过程方法新解

asp.net|存储过程 在使用.net的过程中,数据库访问是一个很重要的部分,特别是在b/s系统的构建过程中,数据库操作几乎成为了一个必不可少的操作.调用存储过程实现数据库操作使很多程序员使用的方法,而且大多数的程序员都是能使用存储过程就使用存储过程,很少直接使用sql语句,所以存储过程是很有用而且很重要的. 存储过程简介 简单的说,存储过程是由一些sql语句和控制语句组成的被封装起来的过程,它驻留在数据库中,可以被客户应用程序调用,也可以从另一个过程或触发器调用.它的参数可以被传递和返回.与

DBHelper类中怎样调用存储过程??????????

问题描述 各给高手们,请问DBHelper类中怎样调用存储过程???DBHelper类中的方法应该怎样写才能把存储过程参数传进去的,最好能有详细代码.谢谢各位了. 解决方案 解决方案二:http://www.cnblogs.com/08shiyan/archive/2010/07/17/1779391.html解决方案三:publicstaticclassDatabaseContext{publicstaticDbCommandGetStoredProcCommand(DbInstancedat

.net调用存储过程时保存数据更改

问题描述 想做一个这样的功能:记录用户登录系统后所进行的所有的数据库操作,这里说的用户登录不是指SQLSERVER的帐户,而是指的业务系统中的User登录.要求记录以下信息:执行操作的用户(User),操作时间,操作类型(增删改),操作的表,操作的字段,操作前的值,操作后的值.以前写了一个简单的,执行SQL的时候再往日志表或者日志文件中加入一条记录.但是这样做有一个问题,就是如果使用ADO.NET调用存储过程来做数据库操作的时候就记录不到这些了,没有办法记录到存储过程执行过程中做的数据操作这两天

java使用jdbc调用存储过程,没有返回结果集。。

问题描述 java使用jdbc调用存储过程,没有返回结果集.. 整个过程是这样的:之前的程序已经上线运行了.后来客户数据库升级,从sqlServer2005升级到sqlServer2008.当然系统也做了相应改动.我们是第三方软件,调用他们的数据库中的存储过程来查询数据.他们升级完系统和数据库之后,我们就查询数据报错.然后最先报的错是驱动版本问题.我就到网上下了sqljdbc4.jar.替换了之后不再报驱动的问题.但是一直无结果集.于是我直接把调用存储过程的sql语句放到数据库中执行.是能查到结

pl sql存储过程-为后台执行加载数据 可以加载到临时表 却不能加载到表区间(调用存储过程)

问题描述 为后台执行加载数据 可以加载到临时表 却不能加载到表区间(调用存储过程) CREATE OR REPLACE PROCEDURE PRC_DET_01026_DAY( IN_DAY IN NUMBER --统计日期yyyymmdd ON_RtnCode OUT NUMBER --返回值,正确为0,错误为ORACLE的错误代码 ON_RtnMsg OUT VARCHAR2 --返回信息,正确为'NO ERROR'否则为ORACLE的出错信息 ) AS -----程序固定变量,不要修改--