La fuerza de un ORM es que le permite modelar el comportamiento de la aplicación utilizando técnicas orientadas a objetos. En un mundo cuidadosamente diseñado, tiene una capa de la aplicación donde el lenguaje de la empresa se encuentra perfectamente con el idioma del equipo de desarrollo. El ORM es un habilitador de eso, si el ORM se usa con sensatez.
La debilidad es que la cantidad de personas que realmente obtienen una programación orientada a objetos es bastante pequeña. Mucha gente escribe espaguetis y albóndigas, con objetos altamente acoplados que tienen poco comportamiento propio y el comportamiento en realidad termina en horribles clases de "Servicio" y "Administrador" de 8000 líneas, y ese código a menudo es tan complejo que todos temen de cambiarlo porque no pueden averiguar cuáles serán los efectos secundarios.
Además, muchas personas realmente no obtienen el modelo relacional. Un ORM no los ayudará a obtenerlo, y no los ayudará al abstraer el modelo relacional. Simplemente le permite centrarse en la capa de su dominio desde el principio y hacerlo bien antes de comenzar a preocuparse demasiado por el diseño de la base de datos. Si se aplica bien, con la ayuda de herramientas de migración de esquemas razonables, ORM puede ayudarlo a evitar que se acumulen las deudas de código.
He creado aplicaciones en las que un ORM mantuvo el código de la aplicación simple, legible, comprobable y con un rendimiento razonable. También he mantenido aplicaciones en las que el patrón se usó incorrectamente y el código fue complicado, no comprobable, lento y frágil; Resulta que el ORM en sí tenía poco que ver con esto, excepto que en lugar de escribir un código incorrecto que modelaba mal el dominio de la aplicación, el equipo de ingeniería heredado escribió un código incorrecto que modelaba mal el dominio de la aplicación Y un código de nivel de servicio incorrecto que descuidaba todos el valor que su ORM podría proporcionarles.
Los ORM no lo harán más inteligente, pero en las manos del desarrollador adecuado, puede llevar a un código más mantenible y de mayor calidad.