Hibernate存储过程的调用

下边是简单的Hibernate存储过程

Java代码:

 
 
 
  1. create   PROCEDURE  proc()   
  2.  begin   
  3.     select   *   from  proctab;   
  4.  end ;   create   PROCEDURE  proc()
  5.  begin
  6.     select   *   from  proctab;
  7.  end ; 

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

Java代码:

 
 
 
  1. <class name="com.test.User" table="proctab">   
  2.            
  3.             class="native"/>   
  4.            
  5.            
  6.            
  7. class>   
  8.       
  9.      <return alias="user" class="com.test.User">   
  10.      <return-property name="id" column="id" />   
  11.      <return-property name="name" column="name" />   
  12.      <return-property name="age" column="age" />   
  13.      return>   
  14.      {call proc()}   
  15.      
  16. <class name="com.test.User" table="proctab">
  17.         
  18.             class="native"/>
  19.         
  20.         
  21.         
  22. class>
  23.    
  24.      <return alias="user" class="com.test.User">
  25.      <return-property name="id" column="id" />
  26.      <return-property name="name" column="name" />
  27.      <return-property name="age" column="age" />
  28.      return>
  29.      {call proc()}
  30.    

调用方法 Java代码:

 
 
 
  1. Session ss= HibernateSessionFactory.getSession()   
  2. List li=ss.getNamedQuery("getUser").list();   
  3. ss.close();  
  4.         Session ss= HibernateSessionFactory.getSession()
  5.         List li=ss.getNamedQuery("getUser").list();
  6.         ss.close();

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

 
 
 
  1. Session session =HibernateSessionFactory.getSession();    
  2. Connection conn = session.connection();    
  3. ResultSet rs =null;   
  4. CallableStatement call = conn.prepareCall("{Call proc()}");   
  5. rs = call.executeQuery();   
  6. rs.close();   
  7. session.close();  
  8. Session session =HibernateSessionFactory.getSession(); 
  9. Connection conn = session.connection(); 
  10. ResultSet rs =null;
  11. CallableStatement call = conn.prepareCall("{Call proc()}");
  12. rs = call.executeQuery();
  13. rs.close();
  14. session.close();

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

Java代码:

 
 
 
  1. Session session =HibernateSessionFactory.getSession();    
  2. SQLQuery query = session.createSQLQuery("{Call proc()}");   
  3. List list =query.list();   
  4. session.close();  
  5. Session session =HibernateSessionFactory.getSession(); 
  6. SQLQuery query = session.createSQLQuery("{Call proc()}");
  7. List list =query.list();
  8. session.close();

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

Java代码:

 
 
 
  1. CallableStatement call = conn.prepareCall("{Call proc(?)}");   
  2. call.setString(1, 参数);   
  3. rs = call.executeQuery();  
  4. CallableStatement call = conn.prepareCall("{Call proc(?)}");
  5. call.setString(1, 参数);
  6. rs = call.executeQuery();

Java代码:

 
 
 
  1. SQLQuery query = session.createSQLQuery("{Call proc(?)}");   
  2. query.setString(0, 参数);   
  3. List list =query.list();  

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

当前题目:Hibernate存储过程的调用
标题路径:http://www.mswzjz.cn/qtweb/news20/318220.html

攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能