Задать вопрос

Как сделать Connection Pool из ThreadLocal?

Использую ThreadLocal для управления транзакциями на чистом JDBC. Вот так

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

public class ConnectionFactory {
    public static ThreadLocal<Connection> connection = new ThreadLocal<>();

    public static Connection createConnection() throws SQLException {
        Connection connection = DriverManager.getConnection("jdbc:h2:mem:test");
        connection.setAutoCommit(false);
        ConnectionFactory.connection.set(connection);
        return connection;
    }

    public static void quietlyClose() {
        try {
            connection.get().close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public static void quietlyRollback() {
        try {
            connection.get().rollback();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

И потом в ДАО в методах берем Connection вот так

Connection connection = ConnectionFactory.connection.get();


А в сервисе открываем вот так в каждом методе
Connection connection = ConnectionFactory.createConnection();

Но как сделать при таких условиях пул, не понимаю совсем.

P.S. Hibernate, Spring использовать запрещено.
  • Вопрос задан
  • 99 просмотров
Подписаться 3 Сложный Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы