Estás viendo una versión antigua de esta página. Ve a la versión actual.
Comparar con el actual Ver el historial de la página
« Anterior Versión 4 Siguiente »
Estado | BORRADOR | ||||||||
---|---|---|---|---|---|---|---|---|---|
Partes interesadas | |||||||||
TAGS | |||||||||
Tomada el | |||||||||
Responsable | |||||||||
Documentación Asociada | |||||||||
Solución Afectada | N/A | ||||||||
|
Asunto a Decidir | El objetivo de este ADR es establecer los patrones de diseño y arquitectónicos a implementar en las consultas y operaciones con filtrados (updates) de los datos Criterios:
|
---|
Identificación de la decisión | Describe brevemente la decisión arquitectónica tomada. Describe brevemente la decisión arquitectónica tomada. |
---|
Contexto | Para facilitar las implementaciones dentro de esta transformación tecnológica, se busca definir un patrón común para desarrollar la capa de acceso a datos, con el objetivo de que sea reconocible por cualquier proveedor, y en cualquier aplicación. Esto permitirá al SAS, afrontar con mayores garantías situaciones como el mantenimiento de una funcionalidad, sus evolutivos, el cambio de los desarrolladores entre proyectos, la incorporación de nuevos desarrolladores o cambios de proveedor. |
---|
patrón de diseño que se utilizan para abstraer y encapsular criterios de búsqueda o reglas de negocio
Abstracción de las Condiciones de Consulta: Permite definir condiciones de consulta de una manera abstracta y reutilizable, lo que facilita la construcción de consultas complejas.
Composición de Condiciones: Las especificaciones pueden ser combinadas mediante operaciones lógicas como AND, OR, NOT, lo que permite construir consultas más elaboradas y flexibles.
Reutilización de Código: Al definir condiciones de consulta como objetos reutilizables, se evita la duplicación de lógica de consulta en diferentes partes del código.
Facilita la Mantenibilidad: Proporciona una manera clara y estructurada de representar condiciones de consulta, lo que facilita la comprensión y el mantenimiento del código.
Complejidad Adicional: Puede introducir una capa adicional de complejidad, especialmente en aplicaciones pequeñas o simples, donde la implementación del patrón puede ser excesiva.
Posible Sobrecarga de Abstracción: En algunos casos, la abstracción proporcionada por el patrón Especificación puede resultar en una sobrecarga cognitiva para los desarrolladores, especialmente si no están familiarizados con el patrón.
Rendimiento Potencialmente Menor: Dependiendo de la implementación y la cantidad de condiciones evaluadas, el patrón Especificación puede tener un impacto en el rendimiento de las consultas, especialmente en sistemas con grandes volúmenes de datos.
Dificultad para Expresar Algunas Consultas: Algunas consultas complejas pueden ser difíciles de expresar utilizando el patrón Especificación, lo que puede
Criterio | OK/KO | Notas |
---|---|---|
Estándar | OK | Es un patrón de diseño que se puede implementar de forma estandarizada en cualquier lenguaje de programanción. Centrándose en java, lenguaje mayoritario, Frameworks como Sprint Boot lo ofrecen y dentro de la estandarización de Jakarta (Jakarta Data) actualmente se encuentra en desarrollo |
Multitecnología | OK | Su abstracción de la tecnología de persistencia y el aislamiento entre el negocio y la capa de acceso a datos lo hacen adecuado para encajarlo en cualquier tipo de fuente de datos. |
Sostenible | OK | Al ser un patrón con gran capacidad de generalización se puede utilizar y reutilizar un diferentes desarrollos. Sus pautas son reconocibles por lo que se reduce los riesgos provocados por situaciones de mantenimiento de una funcionalidad, evolutivos, cambio de los desarrolladores entre proyectos, incorporación de nuevos desarrolladores o cambios de proveedor. |
Arquitectura de Referencia | OK |
|
Desacoplado | OK | Haciendo uso de las interfaces adecuadas y de DTOS, se puede tener una implementación desacoplada de la tecnología y aislada de las definiciones del dominio |
patrón de diseño que se utilizan para abstraer y encapsular criterios de búsqueda o reglas de negocio
Abstracción de Consultas: Permite encapsular consultas complejas en objetos específicos, lo que facilita su reutilización y mantenimiento.
Separación de Responsabilidades: Ayuda a mantener una separación clara entre la lógica de negocio y la lógica de consulta, lo que mejora la modularidad y la legibilidad del código.
Composición de Consultas: Los objetos de consulta pueden ser combinados y encadenados fácilmente para construir consultas más elaboradas y flexibles.
Facilita la Prueba Unitaria: Al encapsular consultas en objetos específicos, se facilita la prueba unitaria de la lógica de consulta sin necesidad de depender de una conexión a la base de datos.
Complejidad Adicional: Introducir una capa adicional de abstracción puede aumentar la complejidad del código, especialmente en aplicaciones pequeñas o simples donde la implementación del patrón puede ser excesiva.
Posible Sobrecarga de Abstracción: Dependiendo de la implementación, el patrón Query Object puede introducir una sobrecarga de abstracción si no se aplica correctamente, lo que puede dificultar la comprensión del código.
Rendimiento Potencialmente Menor: En sistemas con grandes volúmenes de datos o consultas complejas, el uso del patrón Query Object puede tener un impacto en el rendimiento debido a la necesidad de instanciar objetos adicionales y realizar operaciones de mapeo.
Dificultad para Expresar Algunas Consultas: Algunas consultas complejas pueden ser difíciles de expresar utilizando el patrón Query Object, especialmente si implican operaciones que van más allá de la simple selección y filtrado de datos.
Criterio | OK/KO | Notas |
---|---|---|
Estándar | OK | Es un patrón de diseño que se puede implementar de forma estandarizada en cualquier lenguaje de programanción. Centrándose en java, lenguaje mayoritario, Frameworks como Sprint Boot lo ofrecen y dentro de la estandarización de Jakarta (Jakarta Data) actualmente se encuentra en desarrollo |
Sostenible | OK | Al ser un patrón con gran capacidad de generalización se puede utilizar y reutilizar un diferentes desarrollos. Sus pautas son reconocibles por lo que se reduce los riesgos provocados por situaciones de mantenimiento de una funcionalidad, evolutivos, cambio de los desarrolladores entre proyectos, incorporación de nuevos desarrolladores o cambios de proveedor. |
Arquitectura de Referencia | OK |
|
Desacoplado | OK | Haciendo uso de las interfaces adecuadas y de DTOS, se puede tener una implementación desacoplada de la tecnología y aislada de las definiciones del dominio |
Criterio | OK/KO | Notas |
---|---|---|
Estándar | OK | Es un patrón de diseño que se puede implementar de forma estandarizada en cualquier lenguaje de programanción. Centrándose en java, lenguaje mayoritario, Frameworks como Sprint Boot lo ofrecen y dentro de la estandarización de Jakarta (Jakarta Data) actualmente se encuentra en desarrollo |
Sostenible | OK | Al ser un patrón con gran capacidad de generalización se puede utilizar y reutilizar un diferentes desarrollos. Sus pautas son reconocibles por lo que se reduce los riesgos provocados por situaciones de mantenimiento de una funcionalidad, evolutivos, cambio de los desarrolladores entre proyectos, incorporación de nuevos desarrolladores o cambios de proveedor. |
Arquitectura de Referencia | OK |
|
Desacoplado | OK | Haciendo uso de las interfaces adecuadas y de DTOS, se puede tener una implementación desacoplada de la tecnología y aislada de las definiciones del dominio |
Criterio | OK/KO | Notas |
---|---|---|
Estándar | OK | Es un patrón de diseño que se puede implementar de forma estandarizada en cualquier lenguaje de programanción. Centrándose en java, lenguaje mayoritario, Frameworks como Sprint Boot lo ofrecen y dentro de la estandarización de Jakarta (Jakarta Data) actualmente se encuentra en desarrollo |
Sostenible | OK | Al ser un patrón con gran capacidad de generalización se puede utilizar y reutilizar un diferentes desarrollos. Sus pautas son reconocibles por lo que se reduce los riesgos provocados por situaciones de mantenimiento de una funcionalidad, evolutivos, cambio de los desarrolladores entre proyectos, incorporación de nuevos desarrolladores o cambios de proveedor. |
Arquitectura de Referencia | OK |
|
Desacoplado | OK | Haciendo uso de las interfaces adecuadas y de DTOS, se puede tener una implementación desacoplada de la tecnología y aislada de las definiciones del dominio |
Describe brevemente la decisión arquitectónica tomada.
Describe brevemente la decisión arquitectónica tomada.
Describe brevemente la decisión arquitectónica tomada.