zoukankan      html  css  js  c++  java
  • hibernate4中取得connection的方法

    在hibernate3中,使用了c3p0连接池,尝试了多种办法取得connection对象,以下两种可以使用。

    Java代码 
         Connection conn;  
          
        // 方法1:hibernate4中将要废弃这个方法  
        conn = session.connection();  
          
        // 方法2:这个方法也可以用,速度稍慢  
        SessionFactoryImplementor sessionFactory = (SessionFactoryImplementor)new Configuration().configure().buildSessionFactory();   
        conn = sessionFactory.getConnectionProvider().getConnection();  
          
        //方法:3  
        ConnectionProvider cp =((SessionFactoryImplementor)sessionFactory).getConnectionProvider();  
        cp.getConnection();  


    按hibernate的计划,4.0开始将除去Session.connection()这个方法,所以还是最好不要使用它了。
    官方的替代方法是用Session.doWork();
    如:

    Java代码 
             getSession().doWork(  
              new Work() {  
                public void execute(Connection connection) {  
                  // 这里已经得到connection了,可以继续你的JDBC代码。  
                  // 注意不要close了这个connection。  
                }  
              }  
            );

    另外一个方法:

    package com.trendcom.base.util;
    
    import java.sql.Connection;
    import java.sql.SQLException;
    
    import javax.sql.DataSource;
    
    import org.hibernate.SessionFactory;
    import org.springframework.orm.hibernate4.SessionFactoryUtils;
    import org.springframework.web.context.ContextLoaderListener;
    
    public class DataSourceUtil {
    
     private static SessionFactory sessionFactory=null;
     
     static{  
      sessionFactory=(SessionFactory) ContextLoaderListener.getCurrentWebApplicationContext().getBean("sessionFactory");
     }
    
     
     public static Connection getConnection(){
      try {
       return getDataSource().getConnection();
      } catch (SQLException e) {
       e.printStackTrace();
      }
      return null;
     }
    
     
     public static SessionFactory getSessionFactory() {
      return sessionFactory;
     }
    
     public static void setSessionFactory(SessionFactory sessionFactory) {
      DataSourceUtil.sessionFactory = sessionFactory;
     }
    
    
     private static DataSource getDataSource() {
      return SessionFactoryUtils.getDataSource(getSessionFactory());
     }
    
    }
  • 相关阅读:
    运筹学——线性规划及单纯形法求解
    jQuery实现回到顶部功能
    JS与PHP传递JSON数据
    学习笔记Quartz定时器
    MYSQL常用命令总结
    DWZ框架与第三方jQuery插件整合
    jQuery中增加新元素后没法响应原有的事件
    java.lang.OutOfMemoryError: Java heap space解决方法
    Adobe Edge Animate1.0 使用元件创建嵌套动画
    Adobe Edge Animate 1.0 制作自定义动态菜单
  • 原文地址:https://www.cnblogs.com/langtianya/p/4917360.html
Copyright © 2011-2022 走看看