Mysql
 sql >> база данни >  >> RDS >> Mysql

Работа с големи записи в приложение на Java EE

Най-добрият ви залог е да не съхранявайте данните в паметта на Java по какъвто и да е начин, но просто запишете получените данни в отговора незабавно при постъпване на данните. Вие също трябва да конфигурирате MySQL JDBC драйвера да обслужва набора от резултати ред по ред от Statement#setFetchSize() съгласно документацията на MySQL JDBC драйвер , в противен случай ще кешира цялото нещо в паметта.

Ако приемем, че сте запознати със Servlets, ето един начален пример, който взема предвид всичко това:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/plain");
    response.setHeader("Content-Disposition", "attachment;filename=numbers.txt"); // Force download popup.

    Connection connection = null;
    Statement statement = null;
    ResultSet resultSet = null;
    Writer writer = response.getWriter();

    try {
        connection = database.getConnection();
        statement = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
        statement.setFetchSize(Integer.MIN_VALUE);
        resultSet = statement.executeQuery("SELECT number FROM phonenumbers");

        while (resultSet.next()) {
            writer.write(resultSet.getString("number"));
            if (!resultSet.isLast()) {
                writer.write(",");
            }
        }
    } catch (SQLException e) {
        throw new ServletException("Query failed!", e);
    } finally { 
        if (resultSet != null) try { resultSet.close; } catch (SQLException logOrIgnore) {}
        if (statement != null) try { statement.close; } catch (SQLException logOrIgnore) {}
        if (connection != null) try { connection.close; } catch (SQLException logOrIgnore) {}
    }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Symfony3 - SQLSTATE[HY000] [2002] Няма такъв файл или директория

  2. php (размито) съвпадение на търсене

  3. Каква е разликата между MySQL, MySQLi и PDO?

  4. Как да промените MySQL/MariaDB порт по подразбиране в Linux

  5. CodeIgniter:Как да направите заявка за избор (различно име на поле) MySQL