Conceitos - O que é o TypeORM?

Introdução

Conforme novas turmas do GoStack iniciavam seus estudos, comumente eu me deparava com algum aluno falando sobre TypeORM. Isso despertou meu interesse, mas confesso que nunca fui atrás para pesquisar sobre.

Porém, esse mês eu tive a oportunidade de ingressar no Bootcamp e aí não teve jeito, tive que encarar esse ORM. E eu posso garantir, ele é incrível!

Mas chega de conversa, vamos entender qual é o papel que ele desempenha! Lembrando que o foco desse artigo será a teoria, caso queira iniciar com o framework, recomendo a própria documentação.

O que é um ORM?

O TypeORM, como o próprio nome diz, é um ORM. Ok, mas o que isso significa?

Object-Relational Mapping (ORM), em português, mapeamento objeto-relacional, é uma técnica para aproximar o paradigma de desenvolvimento de aplicações orientadas a objetos ao paradigma do banco de dados relacional.

O uso dessa técnica é realizado com o auxílio de um framework, como por exemplo, o TypeORM e o Sequelize.

Qual problema ele resolve?

Quando estamos utilizando a técnica apresentada acima, a diferença entre os dois paradigmas utilizados pode ocasionar um problema chamado impedância objeto-relacional.

De forma resumida, um banco de dados relacional trabalha com tabelas e relações entre elas. Enquanto isso, no paradigma orientado a objetos, temos diversos elementos como classes, propriedades, visibilidade, herança e interfaces.

Esse diferença na estrutura dos dois paradigmas, dificulta a representação dos dados e do modelo. É aí que o ORM entra em cena para resolver esse problema.

Como ele resolve?

O ORM define uma técnica para realizar a conciliação entre os 2 modelos. Uma das partes centrais é através do mapeamento de linhas para objetos:

Ou seja, o ORM define o modo como os dados serão mapeados entre os ambientes, como serão acessados e gravados. Isso diminui o tempo de desenvolvimento, uma vez que não é necessário perder tempo fazendo essa configuração. Outra vantagem está na adaptação de novos membros na equipe, como muitos projetos utilizam a mesma ferramenta, é possível encontrar membros que já estão acostumados com o padrão de trabalho.

Tanto o texto como a imagem, eu encontrei nesse post incrível da Treina Web .

TypeORM

Agora que já entendemos a função de um ORM, vamos focar nesse framework!

De acordo com a própria documentação, o TypeORM é um ORM que pode ser executado nas plataformas NodeJS, Browser, Cordova, PhoneGap, Ionic, React Native, NativeScript, Expo e Electron e pode ser usado tanto com o TypeScript, quanto com o JavaScript.

Uma vantagem do TypeORM em relação a outros frameworks, é que ele suporta dois padrões de desenvolvimento, o Active Record e o Data Mapper.

Só para dar um gostinho de como ficaria um código com o framework, da uma olhada nesse exemplo, onde criamos um model:

import {Entity, PrimaryGeneratedColumn, Column} from "typeorm";

@Entity()
export class User {

    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    firstName: string;

    @Column()
    lastName: string;

    @Column()
    age: number;

}

Conclusão

Apesar de eu ter me limitado à teoria, espero que tenha ficado claro o que é e o porquê de utilizarmos um ORM.

Caso queira conhecer o poder do TypeORM na prática, recomendo esse vídeo , da Rocketseat.

Sugestões, dúvidas ou críticas, deixem aqui nos comentários!

Comentários