sql >> Database teknologi >  >> RDS >> Mysql

Håndtering af store poster i en Java EE-applikation

Dit bedste bud er at ikke gem dataene i Javas hukommelse på nogen måde, men skriv bare de opnåede data til svaret med det samme efterhånden som dataene kommer ind. Du skal også konfigurere MySQL JDBC-driveren til at vise resultaterne række-for-række af Statement#setFetchSize() i henhold til MySQL JDBC-driverdokumentationen , ellers vil det cache det hele i hukommelsen.

Forudsat at du er bekendt med Servlets, er her et kickoff-eksempel, som tager højde for det hele:

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. Sådan bruges CASE Statement i MySQL

  2. NHibernate-kortlægning for Oracle INTERVAL DAG TIL ANDEN datatype

  3. Undslippende strenge med python mysql.connector

  4. MySQL vs. MariaDB:hvad du behøver at vide