O que é TypeORM e para que serve?
\n\nTypeORM é uma poderosa biblioteca de mapeamento objeto-relacional (ORM) para TypeScript e JavaScript, que funciona com diversos bancos de dados: PostgreSQL, MySQL, MariaDB, SQLite, MS SQL Server, Oracle e MongoDB (parcialmente). Ela oferece uma maneira conveniente de interagir com bancos de dados relacionais através de uma abordagem orientada a objetos, permitindo que os desenvolvedores trabalhem com tabelas como classes e com registros como objetos.
\n\nPrincipais razões para usar TypeORM:
\n- \n
- Tipagem: Integração completa com TypeScript garante tipagem forte e autocompletar na IDE. \n
- Abordagem declarativa: Definição do esquema do banco de dados através de decoradores ou esquemas. \n
- Automigrações: Criação e sincronização automática do esquema do banco de dados. \n
- Active Record e Data Mapper: Suporte para ambos os padrões populares. \n
- Suporte a relacionamentos: One-to-One, One-to-Many, Many-to-Many. \n
- Query Builder: Construtor de consultas flexível para consultas SQL complexas. \n
- Multiplataforma: Funciona com Node.js, navegadores, React Native e Ionic. \n
Instalação do TypeORM
\n\nPara instalar o TypeORM e os drivers de banco de dados necessários, use npm (ou yarn):
\n\n// Instalação do TypeORM\nnpm install typeorm --save\n\n// Instalação do reflect-metadata (obrigatório para decoradores)\nnpm install reflect-metadata --save\n\n// Instalação do driver para PostgreSQL\nnpm install pg --save\n\n// Instalação do driver para MySQL/MariaDB\nnpm install mysql2 --save\n\n// Instalação do driver para SQLite\nnpm install sqlite3 --save\n\n// Instalação do driver para SQL Server\nnpm install mssql --save\n\n// Instalação do driver para MongoDB (experimental)\nnpm install mongodb --save\n\nApós a instalação, adicione ao tsconfig.json:
{\n "compilerOptions": {\n "emitDecoratorMetadata": true,\n "experimentalDecorators": true\n }\n}\n\nInício rápido com exemplo de código
\n\nVamos criar uma aplicação simples para gerenciar usuários usando SQLite (não requer instalação de servidor).
\n\n1. Crie o arquivo data-source.ts para configuração da conexão:
import { DataSource } from "typeorm";\nimport { User } from "./entity/User";\n\nexport const AppDataSource = new DataSource({\n type: "sqlite",\n database: "database.sqlite",\n synchronize: true,\n logging: true,\n entities: [User],\n subscribers: [],\n migrations: [],\n});\n\n// Inicialização da conexão\nAppDataSource.initialize()\n .then(() => {\n console.log("Data Source has been initialized!");\n })\n .catch((err) => {\n console.error("Error during Data Source initialization:", err);\n });\n\n2. Crie a entidade User no arquivo entity/User.ts:
import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";\n\n@Entity()\nexport class User {\n @PrimaryGeneratedColumn()\n id: number;\n\n @Column()\n firstName: string;\n\n @Column()\n lastName: string;\n\n @Column({ unique: true })\n email: string;\n\n @Column({ default: true })\n isActive: boolean;\n}\n\n3. Crie o arquivo index.ts para demonstrar o funcionamento:
import "reflect-metadata";\nimport { AppDataSource } from "./data-source";\nimport { User } from "./entity/User";\n\nasync function main() {\n await AppDataSource.initialize();\n\n // Criando um novo usuário\n const user = new User();\n user.firstName = "Ivan";\n user.lastName = "Petrov";\n user.email = "ivan@example.com";\n user.isActive = true;\n\n // Salvando no banco de dados\n await AppDataSource.manager Também na biblioteca
Biblioteca WebSocket Gorilla para Go (Golang) — guia completo
Cache em C# (.NET): Redis, MemoryCache e outras soluções