Executando verificação de segurança...
4

Por que você precisa de um ORM?

Tenho um projeto em Node.js sem ORM. Tive algumas dificuldades pontuais para tentar criar um código útil que não fosse muito específico, mas acho que fui me encontrando ao longo do desenvolvimento. Me parece que foi uma decisão acertada não usar ORM.

Já usei Sequelize e tive algumas dificuldades (fazem alguns anos, então nem lembro quais foram para mencionar). Já vi o TypeORM sendo muito bem falado, até que chegou o Prisma para pegar o lugar de "ORM modinha do momento". Não experimentei nenhum desses dois então não sei dizer sobre a qualidade deles.

Vendo a documentação Prisma vs TypeORM (que está no site do Prisma, então tenha em mente o enviesamento), em especial na seção Data modeling and migrations, está um ponto que me incomoda sobre alguns ORMs. Veja como o código do ORM se entrelaça ao seu, parecendo ser uma única coisa (que não é JavaScript), te tornando dependente.

Esse meu comentário é uma questão de gosto pessoal, mas eu repito: não vi necessidade de usar ORM no meu projeto.

Como bônus, o TabNews não usa ORM e você pode ler qual foi a opinião do Filipe na hora dessa decisão aqui: Vocês topam sofrer comigo?

Carregando publicação patrocinada...
1
1
1

Obrigado pelo seu comentário! Mas honestamente, na minha visão, apesar de ser fundamental saber consultas manuais já que em algum momento irá precisar, os ORMs existem para aumentar a produtividade do desenolvedor.

Para que criar toda uma consulta para selecionar algo se eu conseido fazendo, sla: "user.find()". ORms são práticos.

É claro que tudo precisa de contextos para ser ultilziados, mas em produção, tudo o que tu quer é agilidade e praticidade.

Na verdade, o motivo do meu post é justamente tentar entender qual ORM está mais maduro e pronto para projetos médios e grandes, para ter menos riscos.

1

ORM é muito utilizado em projetos pequenos e médios, em projetos gigantes vejo mais sql cru. Empresas grandes não confiam muito em bibliotecas de terceiro, principalmente porquê pode ter erro em alguma versão, aí atualiza e algo mudou, depois tem que alterar mais código.
Essa conclusão tirei conversando com devs com mais experiência e que trabalhou em empresas gigantescas. Em projetos pessoais só utilizo Prisma, acho a sintaxe dele "interessante", além de servir para consultas mais "simples" e repetitivas, como fazer um select com alguns joins, quando precisa de algo mais complexo precisa de um SQL.

Isso é minha visão de um jovem que está entrando agora no mercado de trabalho.

1
1
1

Nunca vi alguém argumentando mais profundamente sobre o uso de ORMs, sempre era algo superficial no ponto de "você pode usar .findAll() e pronto!". A questão é que, num projeto de verdade, você muito provavelmente não quer usar um SELECT * e quase não terá SELECT sem WHERE.

Não acho que eu consiga te dar boas dicas de como fazer sem usar ORM porque não tenho referência nisso fora de ambiente de estudo (escola/faculdade). O que eu fiz foi identificar um tipo de abstração simples para lidar no meu projeto logo no início, e então ir acoplando as necessidades conforme avançava. Acabei tendo uma classe genérica para fazer find, por exemplo, que aceita um where como string ao invés de ficar algo como em ORMs, que você passa um objeto que vai tendo cada vez mais campos e mais profundidade conforme a consulta tem mais condições. Mas sempre que preciso de algo que não seja básico, já faço um SELECT "cru", sem usar abstração.

1

Po, eu gosto de usar ORM independente de qualquer coisa, claro que é sempre bom saber fazer sem, mas gosto da camada adicional de segurança que adiciona, que não precisa que eu faça um prepared statement e várias outras etapas pra evitar sql injection por exemplo.