Eu sei que essa pergunta pode ser encerrada como baseada em opiniões, mas o que eu preciso no momento são algumas opiniões suportadas por argumentos.
Estou construindo um aplicativo com Postgres e Ecto (Elixir) como a camada de persistência. Existe uma entidade que se refere a si mesma para que você possa construir uma estrutura semelhante a uma árvore. Quanto mais eu estou tentando fazer isso com Ecto, mais frustrado fico.
Os ORMs são simplesmente uma ferramenta ruim para criar estruturas de banco de dados complexas com muitas associações? A maneira orientada a objetos que o ORM tenta aplicar nos dados relacionais parece ser uma abordagem ruim aqui. Objetos são isolados. Se eles interagem com outros objetos, eles (supostamente) enviam mensagens. Seus detalhes internos devem permanecer ocultos. Os dados relacionais formam um gráfico aberto e transparente. Esses dois mundos parecem ser completamente incompatíveis comigo.
No entanto, ORMs são muito comuns e populares. A maioria dos aplicativos da Web trabalha com entidades bastante isoladas que funcionam bem com o ORM, ou por que? Parece-me que, se você deseja implementar qualquer modelo ERD médio complexo usando uma estrutura ORM, é necessário sacrificar código ou desempenho conciso.