Código:
Mi pregunta es si es mas optimo que realizar la paginacion por medio de un query de la siguiente manera cuando son miles de registros:public ArrayList ejecutaQueryPaginada(String query, int numPagina, int numRegPagina) { ArrayList alResultado = new ArrayList(); Connection conBBDD = null; Statement st = null; ResultSet rs = null; try { conBBDD=getConnection(); st = conBBDD.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); st.setFetchSize(numRegPagina); rs = st.executeQuery(query); int fila = numRegPagina * (numPagina - 1) + 1; int cont = 1; ResultSetMetaData md = rs.getMetaData(); int numeroColumnas = md.getColumnCount(); ArrayList alRegistro = new ArrayList(numeroColumnas); for (int i = 1; i <= numeroColumnas; i++) { String nomCol = md.getColumnName(i); alRegistro.add(nomCol); } alResultado.add(alRegistro); if (rs.absolute(fila) && numRegPagina > 0) { do { alRegistro = new ArrayList(); for (int i = 1; i <= numeroColumnas; i++) { alRegistro.add(rs.getString(i)); } alResultado.add(alRegistro); cont++; } while (rs.next() && (cont <= numRegPagina)); } Integer numTuplasTotal = new Integer(0); if (rs.last()) { numTuplasTotal = new Integer(rs.getRow()); } alResultado.add(0, numTuplasTotal); } catch (Exception e) { e.printStackTrace(); } finally { if(st!=null) { try { st.close(); } catch (SQLException e) { e.printStackTrace(); } } if(rs!=null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if(conBBDD!=null) { try { conBBDD.close(); } catch (SQLException e) { e.printStackTrace(); } } } return (alResultado); }
Código:
Actualmente estoy utilizando cuando pagino el resultset por que fue la unica forma que pude realizar para ordenar los datos por las columnas.select * from ( select rownum,nombre,apellido,edad from clientes where fecha between '01/01/2008' and '01/01/2009') a where between a.rownum = 40 and a.rownum=60
Les agradecere sus comentarios, de antemano Gracias..