传统的数据库连接池需要在tomcat或MET-INF中配置数据库连接池信息。我现在的程序并非使用web项目,所以不会涉及tomcat和MET-INF那怎么实现数据库连接池呢?我想应该是c3p0了,但JAVA中使用c3p0后,貌似不能实现连接池功能吧毕竟一旦一个java程序执行完成后,程序中创建的对象也就要销毁啊那c3p0的配置不就没意义因为java程序可不会像tomcat一样一直运行啊求大虾讲解

解决方案 »

  1.   

    Memcached 缓存机制 
    hibernate c3po 
    spring    dbcp 还有分布式 c-jdbc Hibernate也支持Proxool连接池,性能与DBCP不相上下 
    Java数据库连接池 BoneCP 
      

  2.   

    连接池确实不用tomcat什么的就不会用,学习
      

  3.   

    c3p0-0.9.1.2数据库连接池
    是一个开放源代码的JDBC数据源实现项目,它在lib目录中与Hibernate一起发布,实现了JDBC3和JDBC2扩展规范说明的Connection和Statement池.
    C3PO类包位于<附件中/lib/c3p0/c3p0-0.9.1.2.jar>,配置Oracle数据源:
    如本文:
    http://hi.baidu.com/yuxuelulu/blog/item/328f21f411da042cbc3109b1.html
      

  4.   

    import java.beans.PropertyVetoException;
    import java.sql.Connection;
    import java.sql.DatabaseMetaData;
    import java.sql.SQLException;import org.apache.log4j.Logger;
    import com.mchange.v2.c3p0.ComboPooledDataSource;public class ConnectionManager {
        
        private final static Logger LOG = Logger.getLogger(ConnectionManager.class);
        
        private static ComboPooledDataSource ds = new ComboPooledDataSource();
        
        private ConnectionManager() {
            
        }
        
        static {
            try {
                if(LOG.isDebugEnabled()) {
                    LOG.debug("正在初始化数据连接池");
                }
                Config config = Config.getInstance();
                ds.setDriverClass(config.getJdbcDriver());
                ds.setJdbcUrl(config.getJdbcUrl());
                ds.setUser(config.getDatabaseUsername());
                ds.setPassword(config.getDatabasePassword());
                ds.setMaxPoolSize(config.getDatabasePoolMaxSize());
                ds.setMinPoolSize(config.getDatabasePoolMinSize());
                if(LOG.isDebugEnabled()) {
                    LOG.debug("数据连接池初始化完成" +
                     ", 最大可用连接数:" +ds.getMaxPoolSize() + 
                            ", 最小连接数:" + ds.getMinPoolSize());
                }
            } catch (PropertyVetoException e) {
                LOG.error("连接池初始化失败,原因:" + e.getMessage());
                e.printStackTrace();
            }
        }
        
        public static Connection getConnection() throws SQLException {
            return ds.getConnection();
        }
    }