Пользовательская реализация подключения java.sql.Driver. - PullRequest
0 голосов
/ 16 февраля 2012

В настоящее время я загружаю приведенный ниже пользовательский драйвер (TestDriver.java), получаю соединение, создаю оператор, выполняю запрос, получаю результаты и закрываю соединение. Я открываю и закрываю соединение для каждого запроса. Это обычная практика или есть стандартный способ поделиться открытыми соединениями?

    public static void main(String[] args) {
        Class.forName("com.sql.TestDriver");
        java.sql.Connection conn = DriverManager.getConnection("jdbc:test://8888/connectme", props);
        Statement stmt = conn.createStatement;
        ResultSet rs = stmt.executeQuery("select * from table");
        //loop through rs and pull out needed data
        conn.close();  
    }


    public class TestDriver implements java.sql.Driver{
        private final TestSchema schema;
        private Properties props = null;
        static {
            try {
                DriverManager.registerDriver(new TestDriver());
            } catch (SQLException e) {
                e.printStackTrace();
            }

        protected TestDriver() throws SQLException {
            schema = TestSchemaFactory.getInstance().getDbSchemaFromFile(SCHEMA_FILE);
            //loads in and parses a file containing tables, columns used for business logic
        }
        public Connection connect(String url, Properties info) 
                throws SQLException {
           TestSqlConnection conn=null;
           //connect logic here
           return conn; //will return an instance of TestSqlConnection
        }

    @Override
    public boolean jdbcCompliant() {
        return false;
    }
}

Ответы [ 2 ]

1 голос
/ 16 февраля 2012
  1. В идеале вы должны написать отдельный класс фабрики (может быть статическим) скажем ConnectionFactory, который возвращает объект подключения.
  2. Также я вижу, что вы не используете блок try / catch / finally при создании соединение. Я настоятельно рекомендую закрыть соединение в противном случае ваша программа может страдать от утечки соединения, если таковая имеется Возникает исключение, вызывающее резкое поведение.
  3. В идеале вы должны закрыть соединение после того, как ваша операция будет завершена, наконец, clause.In веб-приложение, если вы используете пул соединений затем закрытие соединения вернет соединение обратно в пул и будет доступен для использования.
1 голос
/ 16 февраля 2012

Да, чаще используется пул соединений с базой данных.Это позволит повторно использовать соединения без накладных расходов или закрытия / повторного открытия.Вот ссылка на DBCP, который является одной из реализаций пула соединений с базой данных: http://commons.apache.org/dbcp/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...