O que é ORM? Para que serve e por que eu tenho que usar isso no banco de dados por exemplo
ORM (Object-Relational Mapping)
ORM (Mapeamento Objeto-Relacional, em português) é uma ferramenta que facilita a interação entre programação e bancos de dados usando objetos da Programação orientada a objetos, facilitando operações, reduzindo a necessidade de SQL manual e tornando o desenvolvimento mais eficiente e produtivo.
Porque usar ORM?
As ORM’s chegaram para trazer produtividade e velocidade no dia a dia do programador. Veja algumas vantagens:
- Abstração de Banco de Dados: ORM permite trabalhar com objetos, abstraindo complexidades do banco de dados, facilitando o desenvolvimento.
- Portabilidade de Código: Código ORM é mais independente do banco de dados, facilitando a migração e suporte a diferentes sistemas.
- Produtividade no Desenvolvimento: Reduz a necessidade de escrever consultas SQL manualmente, acelerando o desenvolvimento.
- Manutenção Simplificada: Modificações no esquema do banco são gerenciadas automaticamente, reduzindo o esforço de manutenção.
- Segurança contra Injeção de SQL: ORM ajuda a prevenir ataques de injeção SQL, garantindo consultas seguras por padrão.
Exemplo ORM x SQL Query
No exemplo abaixo criamos uma tabela Usuario com a ORM do Peewee em Python.
Veja como a ORM gera o SQL para ser executado no Banco de Dados.
Criando uma tabela
Python
from peewee import *
db = SqliteDatabase('clientes.db')
class Usuario(Model):
nome = CharField(max_length=120)
email = CharField(max_length=100)
idade = IntegerField()
class Meta:
database = db
Query SQL gerada
CREATE TABLE "usuario" (
"id" INTEGER NOT NULL PRIMARY KEY,
"nome" VARCHAR(120) NOT NULL,
"email" VARCHAR(100) NOT NULL
"idade" INTEGER NOT NULL
);
Inserindo um registro na tabela
novo_usuario = Usuario.create(
nome="Guilherme",
email="teste@teste.com",
idade=27
)
print("id:", novo_usuario.id)
print("nome:", novo_usuario.nome)
print("email:", novo_usuario.email)
print("idade:", novo_usuario.idade)
Query SQL gerada
INSERT INTO "usuario" ("nome", "email", "idade")
VALUES ('Guilherme', 'teste@teste.com', 27);
Video explicativo
Caso tenha interesse em experimentar ORM, fiz um video de introdução.
Video: https://www.youtube.com/watch?v=AALOmFY9SHM