jindix, algo recomendable es fundamentarse bien. La mayoría de las veces los grupos de desarrollos tienden a tomar ejemplos de código e implementar en su aplicación inmediatamente, sin reparar en conceptualizarse con el framework, leer los detalles fundamentales desde la conversión de tipos de datos Java - Base de datos, y resto de cosas que le parecen "chichis" pero que son trasendentales. Ejecutan las cosas a la empirica, prueba / error hasta que funciona por una vez en la maquina local. Esto hace mucho daño al desarrollo de la aplicación, una buena solución es tener un buen director de desarrollo, experimentado y capaz de guiar bien al grupo mientras se fortalece en dichas plataformas. Si el director de desarrollo experimentado no es posible tenerlo por falta de presupuesto, o cualquier otro motivo no queda más que dar el mejor esfuerzo e ir pagando las consecuencias de la novatada.
De mi parte tengo una pregunta, es un problema común presentado en el desarrollo, y estoy casí seguro que más de uno lo ha enfrentado de algún modo. Se trata de la paginación de los resultados de una consulta, es decir, consultas de muchos elementos son generalmente fraccionadas por un factor (generalmente 10). ¿Qué soluciones han encontrado para esto?, en el mercado colombiano he visto varias:
1. Consultan todos los elementos, guardan el manojo de datos en sesión y los van accesando entre diferentes request. Esta solución es logicamente desastroza si de verdad hay una cantidad de elementos consultados. Además, teniendo en cuenta que la aplicación puede tener alta concurrencia, imaginense una buena cantidad de usuarios, cada uno con este lista guardado en su sesión
...
2. Algunos le dejaron la tarea al DAO, aplicando la sintaxis de acuerdo a cada motor de base de datos, para reducir el tamaño de la consulta y comenzarse desde / hasta donde se requiera.
3. La más sensata hasta el momento, de las que he visto, quizas hay mejores. Hibernate permite manejar este problema, además super importante para los que necesitamos abstracción con el motor de base de datos.
A continuación les pongo diagrama estático UML - más conocido como diagrama de clases - ¿qué solución podría ser mejor? ...
Como anoto en el diagrama, estoy inconforme con manchar la interface de negocio con información no funcional para llevar el conteo de la página, o quizas estoy envolatado con los conceptos y la información de la paginación es funcional? ... cualquier opinión bienvenida y agradecida de antemano. Gracias.
PD:
Adjunto 1: Imagen formato PNG del diagrama.
Adjunto 2: Para los que tengan argouml es un proyecto (la versión usada de Argo es 0.18.1).