2017-02-08 2 views
1

Является ли промышленным стандартом создание соединения JDBC и закрытие с каждым классом Java, который использует подготовленный оператор, или вызов хранимой процедуры? Похоже, что было бы гораздо более эффективным способом повторного использования соединения при выполнении вставок, обновлений и удалений, вместо того, чтобы устанавливать соединение каждый раз при создании экземпляра класса.Что такое отраслевой стандарт при создании соединения JDBC?

Я не спрашиваю в отношении сервлетов Java.

Благодарим за отзыв и ресурсы для обзора.

+3

Стандарт использования пула подключений, например. путем получения соединения из контейнера сервлетов, который будет управлять пулом соединений для вас. Если не Servlet, вы должны использовать стороннюю библиотеку для пула соединений, например. см. [Как установить пул соединений в JDBC?] (http://stackoverflow.com/q/2835090/5221149) – Andreas

+0

, но если вы не используете сервлеты, вы все равно можете легко использовать пул соединений. в зависимости от того, что делает ваше приложение и сколько подключений задействовано, и как часто вам нужно будет решить, стоит ли это делать. (но это обычно есть) – slipperyseal

ответ

3

Обычно приложения используют опрос соединений, предоставляемый DataSource. Вам не нужно запускать сервер приложений для этого, даже не для контейнера сервлетов. Просто создайте экземпляр реализации и используйте ее из приложения. Обычно используемой реализацией является Apache Dbcp:

ds = new BasicDataSource(); 
    ds.setDriverClassName("com.mysql.jdbc.Driver"); 
    ds.setUsername("root"); 
    ds.setPassword("root"); 
    ds.setUrl("jdbc:mysql://localhost/test"); 
    ... 
    // then later in the application: 
    Connection conn = ds.getConnection(); 
    // do the stuff 
    conn.close(); // only releases conn back to pool 
    ... 
    // or better in Java 7: 
    try (Connection conn = ds.getConnection()) { 
      // do the stuff 
    } 
+0

Спасибо всем за отзыв. Создал класс диспетчера подключений и пошел с Connection.getConnection() работал отлично; и вот так я могу просто установить связь с методом. Пожалуйста, дайте мне знать, если мне нужно опубликовать обновленный код. – dangerouslyCoding

0

Вы можете использовать пул соединений, из которого ваш код может захватывать/освобождать соединения по мере необходимости. Некоторые популярные - C3P0 и DBCP. См. this answer, чтобы начать.

Смежные вопросы