Há um conjunto bastante grande e variado de dificuldades conceituais e técnicas ao tentar se aproximar de um banco de dados relacional de um ângulo orientado a objeto. Essas dificuldades são conhecidas coletivamente como incompatibilidade entre impedância objeto-relacional e o artigo da Wikipédia relacionado é extremamente informativo. O artigo identifica muito poucos, não vejo nenhuma maneira sensata de descrevê-los aqui. Só para dar uma ideia geral, eles são catalogados como:
- Mismatches
- Object-oriented concepts
- Data type differences
- Structural and integrity differences
- Manipulative differences
- Transactional differences
- Solving impedance mismatch
- Minimization
- Alternative architectures
- Compensation
- Contention
- Philosophical differences
Acho que, se você ler o artigo, você entenderá que o fato de ORM ser às vezes descrito como um antipadrão é, na verdade, 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 que vai contra a filosofia de um domínio.
Mas eu não acho que o termo deva se aplicar a qualquer coisa que essencialmente atue como uma ponte entre dois domínios vastamente diferentes. Rotular um padrão como anti-padrão só faz sentido dentro de seu domínio. Então, a questão de saber se é um anti-padrão ou não é irrelevante.
Mas é útil? Sim ORM é um dos anti-padrões mais úteis por aí. Você entenderá por que somente se você se encontrar em uma situação prática onde terá que trocar bancos de dados em um projeto. Ou até mesmo atualizar para outra versão do mesmo banco de dados. O ORM é uma daquelas coisas que você só entende quando realmente precisa delas.
Claro, como tudo é útil, o ORM é altamente propenso ao abuso. Se você acha que isso de alguma forma substitui a necessidade de saber tudo sobre o banco de dados em que você trabalha, então ele vai voltar e morder você. Difícil.
Por fim, deixe-me descaradamente ligar outra das minhas respostas , no relacionado " O padrão ActiveRecord segue / incentiva os princípios de design do SOLID? " pergunta, que para mim é uma questão muito mais relevante do que" é um anti-padrão ".