Sobre o projeto

Bun é um ORM moderno em Golang projetado para desenvolvedores que preferem escrever SQL diretamente, mas desejam os benefícios da segurança de tipos, consultas estruturadas e portabilidade entre bancos de dados. Diferente de ORMs que abstraem o SQL, Bun o abraça — permitindo construir consultas complexas e legíveis usando métodos Go, mantendo controle total sobre o SQL gerado. Suporta múltiplos bancos de dados, incluindo PostgreSQL, MySQL/MariaDB, SQLite, Microsoft SQL Server e Oracle, cada um com seu driver e dialecto próprios. As consultas podem ser mapeadas para structs, mapas, fatias ou valores escalares, oferecendo flexibilidade na forma como os dados são consumidos. Relacionamentos entre tabelas são definidos via struct tags, permitindo carregamento eager de modelos relacionados, como has-many e belongs-to. O Bun inclui recursos prontos para produção, como migrações (com alterações de schema versionadas), operações em massa (insert/update/delete), soft deletes e integração com OpenTelemetry para observabilidade. O debug é facilitado por logging detalhado de queries, e a performance é otimizada por construir-se sobre o pacote padrão `database/sql` do Go, com overhead mínimo. A biblioteca oferece documentação extensa, exemplos e um starter kit para uso em produção. Também se integra ao Uptrace, uma ferramenta APM open-source, para distributed tracing e monitoramento. Suporte da comunidade está disponível via Discord e discussões no GitHub. Ideal para equipes que buscam um equilíbrio entre expressividade do SQL e conveniência de ORM, o Bun evita magicas enquanto entrega camadas de acesso a dados poderosas e manuteníveis em aplicações Go.