O que é GORM e para que serve?
\n\nGORM é uma biblioteca ORM (Object-Relational Mapping) poderosa e popular para a linguagem Go. Ela fornece aos desenvolvedores uma maneira conveniente de interagir com bancos de dados relacionais (PostgreSQL, MySQL, SQLite, SQL Server e outros), usando uma abordagem orientada a objetos em Go.
\n\nPara que serve o GORM?
\n- \n
- Automação de CRUD: O GORM assume a escrita de código SQL padrão para criar, ler, atualizar e excluir registros. \n
- Migrações de esquema: Permite criar e atualizar automaticamente tabelas no banco de dados com base em suas estruturas Go. \n
- Relacionamentos entre tabelas: Simplifica o trabalho com relacionamentos "um para muitos", "muitos para muitos" e "um para um". \n
- Segurança: Proteção integrada contra injeção de SQL por meio de consultas parametrizadas. \n
- Desempenho: Suporta carregamento preguiçoso (Lazy Loading), carregamento antecipado (Eager Loading) e cache. \n
- Comunidade: Comunidade enorme, muitos plugins e extensões. \n
Instalação do GORM
\n\nO GORM é instalado da maneira padrão para pacotes Go. Certifique-se de ter o Go instalado (versão 1.18+).
\n\ngo get -u gorm.io/gorm\ngo get -u gorm.io/driver/sqlite # Para SQLite\ngo get -u gorm.io/driver/mysql # Para MySQL\ngo get -u gorm.io/driver/postgres # Para PostgreSQL\ngo get -u gorm.io/driver/sqlserver # Para SQL Server\n\nNota: Ao contrário do Python (pip) ou Node.js (npm), o Go não possui um gerenciador de pacotes único. O comando go get baixa o código-fonte e o compila em seu projeto.
Início rápido com exemplo de código
\n\nVamos criar um aplicativo simples para gerenciar usuários usando SQLite.
\n\npackage main\n\nimport (\n "fmt"\n "gorm.io/driver/sqlite"\n "gorm.io/gorm"\n)\n\n// User — modelo de dados, correspondente à tabela no BD\ntype User struct {\n ID uint `gorm:"primaryKey"`\n Name string `gorm:"size:100;not null"`\n Email string `gorm:"uniqueIndex;size:255"`\n Age int\n}\n\nfunc main() {\n // 1. Conexão ao banco de dados\n db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})\n if err != nil {\n panic("falha ao conectar ao banco de dados")\n }\n\n // 2. Automigração — criação da tabela\n db.AutoMigrate(&User{})\n\n // 3. Criação de registro (Create)\n user := User{Name: "Ivan Petrov", Email: "ivan@example.com", Age: 30}\n result := db.Create(&user)\n if result.Error != nil {\n fmt.Println("Erro ao criar:", result.Error)\n }\n fmt.Printf("Usuário criado com ID: %d\\n", user.ID)\n\n // 4. Leitura de registro (Read)\n var readUser User\n db.First(&readUser, user.ID) // Busca pela chave primária\n fmt.Printf("Usuário encontrado: %+v\\n", readUser)\n\n // 5. Atualização de registro (Update)\n db.Model(&readUser).Update("Age", 31)\n fmt.Printf("Idade atualizada: %d\\n", readUser.Age)\n\n // 6. Exclusão de registro (Delete)\n db.Delete(&readUser)\n fmt.Println("Usuário excluído")\n}\n\nPrincipais métodos/funções do GORM
\n\n1. gorm.Open(dialector, config)
\nO que faz: Estabelece uma conexão com o banco de dados. Retorna uma instância de *gorm.DB.
\nParâmetros:
\n- \n
dialector— driver do banco de dados (por exemplo, sqlite.Open, mysql.Open, postgres.Open). \n config— configuração do GORM (gorm.Config). \n
Exemplo:
\ndb, err := gorm.Open(mysql.Open("user:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"), &gorm.Config{})\n\n2. db.AutoMigrate(models ...interface{})
\nO que faz: Cria ou atualiza automaticamente a t
Também na biblioteca
gRPC para Go (Golang): bibliotecas, exemplos e guia prático
Trabalhando com XML em JavaScript (Node.js): parsing, criação e validação
Trabalho com S3 e armazenamentos em nuvem em C# (.NET): biblioteca AWS SDK
Validação de dados em C++: bibliotecas, métodos e exemplos de código