hibernate调用存储过程(转)

本文讲述的是Hibernate 存储过程的调用,首先给出了简单的Hibernate存储过程并附其Java代码,然后给出了调用方法的Java代码,及其它相应的Java代码。 下边是简单的Hibernate存储过程

Java代码:

1.createPROCEDUREproc()

2.begin

3.select*fromproctab;

4.end;createPROCEDUREproc()

5.begin

6.select*fromproctab;

7. end ;

Hibernate存储过程调用的一种方法是通过Hibernate传统的xml映射方式去调用。

Java代码:

1.<classname="com.test.User"table="proctab">

2.

3.class="native"/>

4.

5.

6.

7.class>

8.

9.<returnalias="user"class="com.test.User">

10.<return-propertyname="id"column="id"/>

11.<return-propertyname="name"column="name"/>

12.<return-propertyname="age"column="age"/>

13.return>

14.{callproc()}

15.

16.<classname="com.test.User"table="proctab">

17.

18.class="native"/>

19.

20.

21.

22.class>

23.

24.<returnalias="user"class="com.test.User">

25.<return-propertyname="id"column="id"/>

26.<return-propertyname="name"column="name"/>

27.<return-propertyname="age"column="age"/>

28.return>

29.{callproc()}

30.

调用方法 Java代码:

1.Sessionss=HibernateSessionFactory.getSession()

2.Listli=ss.getNamedQuery("getUser").list();

3.ss.close();

4.

5.Sessionss=HibernateSessionFactory.getSession()

6.Listli=ss.getNamedQuery("getUser").list();

7. ss.close();

及其类似jdbc的方法 Java代码:

1.Sessionsession=HibernateSessionFactory.getSession();

2.Connectionconn=session.connection();

3.ResultSetrs=null;

4.CallableStatementcall=conn.prepareCall("{Callproc()}");

5.rs=call.executeQuery();

6.rs.close();

7.session.close();

8.

9.Sessionsession=HibernateSessionFactory.getSession();

10.Connectionconn=session.connection();

11.ResultSetrs=null;

12.CallableStatementcall=conn.prepareCall("{Callproc()}");

13.rs=call.executeQuery();

14.rs.close();

15.session.close();

这种方法基本上就是jdbc,不过很简单,总是感觉怪怪的~还有就是通过强大的createSQLQuery来实现,o(∩_∩)o...哈哈 个人比较喜欢这种方法

Java代码:

1.Sessionsession=HibernateSessionFactory.getSession();

2.SQLQueryquery=session.createSQLQuery("{Callproc()}");

3.Listlist=query.list();

4.session.close();

5.

6.Sessionsession=HibernateSessionFactory.getSession();

7.SQLQueryquery=session.createSQLQuery("{Callproc()}");

8.Listlist=query.list();

9.session.close();

如果没有返回值 直接用execute的方法就可以了,(*^__^*) 忘了一个重要的问题就是Hibernate存储过程的传参问题

Java代码:

1.CallableStatementcall=conn.prepareCall("{Callproc(?)}");

2.call.setString(1,参数);

3.rs=call.executeQuery();

4.

5.CallableStatementcall=conn.prepareCall("{Callproc(?)}");

6.call.setString(1,参数);

7.rs = call.executeQuery();

Java代码:

1.SQLQueryquery=session.createSQLQuery("{Callproc(?)}");

2.query.setString(0,参数);

3.List list =query.list();

以上便是对Hibernate存储过程调用的认识,粗陋之处还请指正。

本文来自:http://www.crazycoder.cn/Bo-abstracts-selected/Article171541.html

相关推荐