Encuentra las diferencias: MyBatis y Queries

Published on

in

, ,

«Todos los días se aprende algo» versa un dicho popular, y qué cierto es. En uno de los proyectos que estoy ejecutando en el trabajo nos encontramos con el siguiente caso:

Una consulta ejecuta un query en particular. Cuando la consulta se muestra en pantalla se tienen 150 registros, pero si se ejecuta en un cliente de base de datos, muestra 300… ¿Por qué?

Parecía un juego de encontrar las diferencias…

La plataforma de desarrollo es la siguiente: Java 1.8, Java Server Faces 2.2, Apache Tomcat 8.0, MySQL 5.7, MyBatis como framework de acceso a datos.

¿Cuál era el problema? No leer el manual completo de MyBatis y una vista ofuscada.

Resulta que el query traía en efecto 300 registros, peeeeerooooo, sólo 150 eran diferentes, es decir, si analizábamos los registros, la información de un renglón venía repetida en otro. Si ejecutabamos el query anteponiendo un DISTINCT entonces obteníamos los 150 registros que veíamos en pantalla.

Entonces, ¿por qué se presentaban 150 registros sin haber usado DISTINCT en el SELECT? La respuesta: MyBatis. El framework posee un mecanismo de optimización de resultados automático, por lo que al detectar esos duplicados, el framework los eliminaba en segundo plano antes de enviarlos a pantalla.

La enseñanza de la crónica: Es importante leer TODA la documentación de un framework y ver detalladamente los resultados de tu query cuando compruebas los datos.

2 responses to “Encuentra las diferencias: MyBatis y Queries”

  1. Avatar de Alejandro Catrip
    Alejandro Catrip

    La importancia de usar un ORM completo, Hibernate o JPA de Spring, MyBatis solo es un pseudo ORM que requiere configuraciones adicionales.

    En este caso un JPA y spring boot empleando la tecnología de microservicios y problemas resueltos.

    1. Avatar de Ivan sin miedo

      Se agradece el comentario 🙃😉

Deja un comentario

Descubre más desde Crónicas de Programación

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo