Java 池连接JDBC最佳实践

Java 池连接JDBC最佳实践,java,mysql,jdbc,pool,Java,Mysql,Jdbc,Pool,我总是为我的连接实现一个Pool类和一个try{}catch{}finally语句 这是游泳池: package Util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Vector; public class PoolvTiger { private Vector <Connection> connec

我总是为我的连接实现一个Pool类和一个try{}catch{}finally语句

这是游泳池:

package Util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Vector;


public class PoolvTiger
{
    private Vector <Connection> connections = new Vector<Connection>();
    protected String jdbc;
    protected String servidor;
    protected String usuario;
    protected String password;
    protected int cantCon;
    private static PoolvTiger pool;
    private PoolvTiger()
    {
        getConfiguration();


        for (int i= 0; i< cantCon;i++)
            connections.add(connect());
    }


    public static PoolvTiger getPoolConnection()
    {
        if (pool== null)
            pool =new PoolvTiger();
        return pool;
    }
    private Connection connect()
    {
        try
        {
            //Setear driver
            Class.forName("com.mysql.jdbc.Driver");

            String dbConnectString = jdbc + servidor; 
            Connection con = DriverManager.getConnection (dbConnectString, usuario, password);

            return con;
        }
        catch (SQLException e)
        {
            System.out.println("Mensaje Error: " + e.getMessage());
            System.out.println("Stack Trace: " + e.getStackTrace());
            return null;
        }
        catch (Exception ex)
        {
            System.out.println("Mensaje Error: " + ex.getMessage());
            System.out.println("Stack Trace: " + ex.getStackTrace());
            return null;
        }
    }

    public void getConfiguration()
    {

        // Carga del fichero de propiedades 
        try 
        {

           //Leo los valores de configuracion
           jdbc = "jdbc:mysql://";
           cantCon = 20;

           servidor = Props.vtiger_host+":3306/"+Props.vtiger_db;
           usuario =Props.vtiger_user;
           password = Props.vtiger_pass;



         } 
        catch (Exception e) 
         {
                System.out.println("Mensaje Error: " + e.getMessage());
                System.out.println("Stack Trace: " + e.getStackTrace());
         }
    }
    public void closeConnections()
    {
        for (int i=0; i<connections.size();i++)
        {
            try
            {
                connections.elementAt(i).close();
            }
            catch(Exception e)
            {
                System.out.println("Mensaje Error: " + e.getMessage());
                System.out.println("Stack Trace: " + e.getStackTrace());
            }
        }
    }
    public  Connection getConnection()
    {
        Connection c = null;
        if (connections.size()>0)
            c = connections.remove(0);
        else
        {
            c = connect();
            //System.out.println("EXITO");
        }
        return c;
    }
    public void realeaseConnection(Connection c)
    {
        connections.add(c);
    }
}
我在做,莱特

我注意到我没有使用池的closeConnections方法,我也没有关闭任何东西,但是我的应用程序运行得很好

结果集和语句也必须关闭吗

另外,我使用了很多这种格式的方法。这不仅仅是一个,还有很多,所以我在寻找完美的实现


谢谢

如果您正在寻找完美的实现,为什么您要创建自己的连接池而不是一个经过测试的连接池?我没有创建自己的连接池,他们在大学里为我提供了这个连接池。我一整年都在课堂上使用它。你有完美实现的链接给我看吗?你怎么能确定有一个完美的实现?
Connection conn=null;
        try{
              conn=PoolvTiger.getPoolConnection().getConnection();
              PreparedStatement ps = conn.prepareStatement("SELECT * FROM something");
              ResultSet rs=ps.executeQuery();
              PoolvTiger.getPoolConnection().realeaseConnection(conn);

         }catch(Exception e){
             Log.log("ERROR al validar usuario");
         }finally {
             PoolvTiger.getPoolConnection().realeaseConnection(conn);
         }