Existe um conjunto bastante amplo e variado de dificuldades conceituais e técnicas ao tentar abordar um banco de dados relacional a partir de um ângulo orientado a objetos. Essas dificuldades são coletivamente conhecidas como incompatibilidade de impedância objeto-relacional e o artigo relacionado da Wikipedia é extremamente informativo. O artigo identifica alguns, não vejo nenhuma maneira sensata de descrevê-los aqui. Apenas para lhe dar uma ideia geral, eles são catalogados como:
- Incompatibilidades
- Conceitos orientados a objetos
- Diferenças de tipo de dados
- Diferenças estruturais e de integridade
- Diferenças manipulativas
- Diferenças transacionais
- Resolução de incompatibilidade de impedância
- Minimização
- Arquiteturas alternativas
- Compensação
- Contenção
- Diferenças filosóficas
Acho que, se você der um tempo para ler o artigo, entenderá que o fato de o ORM às vezes ser descrito como um antipadrão é inevitável. Os dois domínios são tão diferentes que qualquer abordagem para tratar um como o outro é, por padrão, um antipadrão, no sentido de que um antipadrão é um padrão contrário à filosofia de um domínio.
Mas não acho que o termo deva se aplicar a qualquer coisa que atue essencialmente como uma ponte entre dois domínios muito diferentes. Rotular um padrão como antipadrão faz sentido apenas dentro de seu domínio. Portanto, a questão de saber se é um anti-padrão ou não é irrelevante.
Mas isso é útil? Sim, o ORM é um dos anti-padrões mais úteis existentes. Você entenderá o motivo somente se se encontrar em uma situação prática em que precisará trocar bancos de dados em um projeto. Ou ainda atualize para outra versão do mesmo banco de dados. ORM é uma dessas coisas, que você só entende completamente quando realmente precisa delas.
Obviamente, como tudo útil, o ORM é altamente propenso a abusos. Se você acha que, de alguma forma, substitui a necessidade de saber tudo sobre o banco de dados em que trabalha, ele voltará e o morderá. Difícil.
Por fim, permita-me sem vergonha acrescentar outra das minhas respostas , no relacionado "O padrão ActiveRecord segue / incentiva os princípios de design do SOLID?" questão, que para mim é uma questão muito mais relevante do que "é um antipadrão".