準備工作:
1.hibernate3
到這下載hibernate3:http://sourceforge.net/project/showfiles.phpgroup_id=40712&package_id=127784&release_id=403223
2.mysql (注意一定要用mysql5.0和最新驅動)
?mysql官方網站http://www.mysql.com/
1
.建張表
CREATE
?
TABLE
?`proctest`?(
??`id`?
int
(
11
)?
NOT
?
NULL
?auto_increment,
??`Name`?
varchar
(
20
)?
default
?
''''''
,
??`age`?
int
(
11
)?
default
?
NULL
,
??`address`?
varchar
(
50
)?
default
?
''
,
??
PRIMARY
?
KEY
??(`id`)
)?ENGINE
=
InnoDB?
DEFAULT
?CHARSET
=
gb2312;
插入幾條記錄
INSERT
?
INTO
?`proctest`?
VALUES
?(
1
,
'
tom
'
,
22
,
'http://www.tkk7.com
'
);
INSERT
?
INTO
?`proctest`?
VALUES
?(
2
,
'
wujun
'
,
25
,
'http://www.tkk7.com/wujun
'
);
INSERT
?
INTO
?`proctest`?
VALUES
?(
3
,
'
jerry
'
,
30
,
'
深圳
'
);
INSERT
?
INTO
?`proctest`?
VALUES
?(
4
,
'
wujun
'
,
40
,
'
南昌
'
);
創建存儲過程
--
這只是一個例子,就來個簡單存儲過程
create
?
PROCEDURE
?testProc()
begin
???
select
?
*
?
from
?proctest;
end
;
打開eclipce新建個java工程,記的把hiberbate3類庫也一起加進去..
看下結構圖:

1.新建UserVO.java文件
package
?net.wj.proc.vo;


public
?
class
?UserVO?
{
????
private
?
int
?id;
????
private
?String?name;
????
private
?
int
?age;
????
private
?String?address;
????
public
?UserVO()

????
{}
順便把它相對應的配置文件也寫上。。
UserVO.hbm.xml?
<?xml?version="1.0"?encoding='UTF-8'?>
<!DOCTYPE?hibernate-mapping?PUBLIC
????????????????????????????"-//Hibernate/Hibernate?Mapping?DTD?3.0//EN"
????????????????????????????"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"?>

<!--?DO?NOT?EDIT:?This?is?a?generated?file?that?is?synchronized?-->
<!--?by?MyEclipse?Hibernate?tool?integration.???????????????????-->
<!--?Created?Sat?Apr?22?17:08:56?CST?2006?????????????????????????-->
<hibernate-mapping>

????<class?name="net.wj.proc.vo.UserVO"?table="proctest">
????????<id?name="id"?column="id">
????????????<generator?class="native"/>
????????</id>
????????
????????<property?name="name"?column="name"?type="string"?/>
????????<property?name="age"?column="age"?type="integer"?/>
????????<property?name="address"?column="address"?type="string"?/>

????</class>

????<!--sql查詢-->
?????<sql-query?name="select">
?????<![CDATA[select?{usr.*}?from?proctest?usr?]]>
?????<return?alias="usr"?class="net.wj.proc.vo.UserVO"?/>
?????</sql-query>

?????<!--調用存儲過程就在這里配了-->
????<sql-query?name="getUser"?callable="true">
?????<return?alias="user"?class="net.wj.proc.vo.UserVO">
?????
?????<return-property?name="id"?column="id"?/>
??????<return-property?name="name"?column="name"?/>
???????<return-property?name="age"?column="age"?/>
????????<return-property?name="address"?column="address"?/>
?????</return>
?????<!--這里就是我們剛剛創建的存儲過程名-->
?????{call?testProc()}
?????</sql-query>
</hibernate-mapping>

測試代碼
package?net.wj.proc.test;


import?java.util.List;

import?org.hibernate.*;
import?org.hibernate.cfg.*;
import?net.wj.proc.vo.*;
import?org.apache.log4j.*;



public?class?ProcTest?
{


????/**?*//**
?????*?@param?args
?????*/
????Logger?log=Logger.getLogger(this.getClass());
????public?ProcTest()

????
{}

????public?static?void?main(String[]?args)?
{
????????System.out.print("start.............................");
????????ProcTest?tt=new?ProcTest();
???????//?tt.LoadAll();
???????//?tt.ExampleSelect();
???????tt.ExampleProc();
????????
????}
????
????//得到Session,
????public?Session??getSession()

????
{
????????try

????????
{
????????????Configuration?cfg?=?new?Configuration().configure();
????????????SessionFactory?sf=cfg.buildSessionFactory();
????????????Session?ss=?sf.openSession();
????????????return?ss;

????????}
????????catch(Exception?ee)

????????
{
????????????System.out.print("失敗"+ee.getMessage());
????????????return?null;
????????}
??????
????}
????//這里調我們在UserVO.hbm.xml
????//sql-query?寫上的name屬性getUser
????public?void?ExampleProc()

????
{
????????Session?ss=this.getSession();
????????List?li=ss.getNamedQuery("getUser").list();
????????for(int?i=0;i<li.size();i++)

????????
{
????????????UserVO?vo=(UserVO)li.get(i);
????????????log.info("name:"+vo.getName());
????????????log.info("age"+vo.getAge());
????????????log.info("address"+vo.getAddress());
????????}
????????ss.close();
????}
????//配置文件的sql查詢
????public?void?ExampleSelect()

????
{
???????????Session?ss=this.getSession();
???????????List?li=?ss.getNamedQuery("select").list();
????????
???????????for(int?i=0;i<li.size();i++)

???????????
{
????????????UserVO?vo=(UserVO)li.get(i);
????????????log.info("name:"+vo.getName());
????????????log.info("age"+vo.getAge());
????????????log.info("address"+vo.getAddress());
???????????}
???????????ss.close();??
????}
}記的用最新的驅動:
要不然可能會報這個錯
Exception?in?thread?"main"?org.hibernate.exception.GenericJDBCException:?could?not?execute?query
????at?org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:91)
????at?org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:79)
????at?org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
????at?org.hibernate.loader.Loader.doList(Loader.java:2148)
????at?org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
????at?org.hibernate.loader.Loader.list(Loader.java:2024)
????at?org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:111)
????at?org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1674)
????at?org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:147)
????at?org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:164)
????at?net.wj.proc.test.ProcTest.ExampleProc(ProcTest.java:45)
????at?net.wj.proc.test.ProcTest.main(ProcTest.java:22)
Caused?by:?java.sql.SQLException:?Callable?statments?not?supported.
????at?com.mysql.jdbc.Connection.prepareCall(Connection.java:1278)
????at?org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:439)
????at?org.hibernate.jdbc.AbstractBatcher.prepareCallableQueryStatement(AbstractBatcher.java:115)
????at?org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1557)
????at?org.hibernate.loader.Loader.doQuery(Loader.java:661)
????at?org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
????at?org.hibernate.loader.Loader.doList(Loader.java:2145)
????
?8?more
09:38:18,837??INFO?SessionFactoryImpl:153?-?building?session?factory
09:38:18,917??WARN?Configurator:126?-?No?configuration?found.?Configuring?ehcache?from?ehcache-failsafe.xml?found?in?the?classpath:?jar:file:/E:/lib/hibernate3/ehcache-1.1.jar!/ehcache-failsafe.xml
09:38:21,951??INFO?SessionFactoryObjectFactory:82?-?Not?binding?factory?to?JNDI,?no?JNDI?name?configured

Hibernate:?
{call?testProc()}
09:38:22,482??WARN?JDBCExceptionReporter:71?-?SQL?Error:?0,?SQLState:?S1C00
09:38:22,482?ERROR?JDBCExceptionReporter:72?-?Callable?statments?not?supported.

源代碼
http://www.tkk7.com/Files/wujun/Proc.rar是不是挺簡單的.