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