@Override
    public <T, E extends Exception> List<T> doInTransaction(UnitOfWork<T, E> unitOfWork) throws E, DaoException {
        Connection conn = createConnection();

        List<T> result = unitOfWork.doInTx();

        try {
            conn.commit();

            return result;
        } catch (SQLException e) {
            JdbcUtils.rollbackQuietly(conn);
            logger.warn(e.getMessage(),e);
            throw new DaoException(e.getMessage()); //TODO возможно переделать
        } finally {
            JdbcUtils.closeQuietly(conn);
            connectionHolder.remove();
        }
    }