Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menangani catatan besar dalam aplikasi Java EE

Taruhan terbaik Anda adalah tidak simpan data dalam memori Java dengan cara apa pun, tetapi tulis saja data yang diperoleh ke respons segera saat data masuk. Anda juga perlu mengonfigurasi driver MySQL JDBC untuk menyajikan hasil baris demi baris dengan Statement#setFetchSize() sesuai dokumentasi driver MySQL JDBC , jika tidak, semuanya akan di-cache di memori.

Dengan asumsi Anda sudah familiar dengan Servlets, berikut adalah contoh awal yang memperhitungkan semua itu:

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. bertahan Java LocalDate di MySQL

  2. Penyeimbangan Beban PostgreSQL &Penyempurnaan ProxySQL - ClusterControl 1.5

  3. Mengapa MySQL tidak mendukung presisi milidetik/mikrodetik?

  4. .Net MySql error Kunci yang diberikan tidak ada dalam kamus

  5. Menempatkan Rails di atas database yang ada