Sé que esta pregunta podría cerrarse en función de la opinión, pero lo que necesito en este momento son algunas opiniones respaldadas por argumentos.
Estoy creando una aplicación con Postgres y Ecto (Elixir) como la capa de persistencia. Hay una entidad que hace referencia a sí misma para que pueda construir una estructura en forma de árbol con ella. Cuanto más trato de hacer esto con Ecto, más frustrado me siento.
¿Son los ORM simplemente una mala herramienta para crear estructuras DB complejas con muchas asociaciones? La forma orientada a objetos que ORM intenta imponer sobre los datos relacionales parece ser un mal enfoque aquí. Los objetos están aislados. Si interactúan con otros objetos, (se supone que deben) enviar mensajes. Sus detalles internos deben permanecer ocultos. Los datos relacionales forman un gráfico abierto y transparente. Estos dos mundos parecen ser completamente incompatibles conmigo.
Sin embargo, los ORM son muy comunes y populares. ¿La mayoría de las aplicaciones web funcionan con entidades bastante aisladas que funcionan bien con ORM, o por qué? Me parece que si desea implementar cualquier modelo ERD medio complejo utilizando un marco ORM, debe sacrificar el código conciso o el rendimiento.