DEV Community

Cover image for Mapeamento objeto-relacional (ORM) | Explicação completa (Definição, uso, estrutura e prática)
Daniela "Ingeniela" Barazarte
Daniela "Ingeniela" Barazarte

Posted on

Mapeamento objeto-relacional (ORM) | Explicação completa (Definição, uso, estrutura e prática)

Mapeamento objeto-relacional (ORM) | Explicação completa (Definição, uso, estrutura e prática)

Introdução

Olá, meu nome é Daniela Barazarte e quero dar as boas-vindas a esta explicação completa sobre ORM (Object-Relational Mapping). Esta explicação será intuitiva e simples assim como todas as explicações que fazem parte do #DetectaLaLogica.

Se você preferir vídeos, aqui está um tutorial completo feito por mim no YouTube, é em espanhol, mas também tem legendas: https://www.youtube.com/watch?v=XIkDO9aPX_4

Teoria

Definição de cada palavra

*Mapeamento Relacional de Objeto (ORM)

  • Object (Object): em OOP, é uma instância de uma classe que possui atributos e métodos que permitem realizar determinadas ações e manipular dados.
  • Relacional (Relacional): banco de dados relacional é uma estrutura de dados organizada em tabelas que são interligadas por relacionamentos.
  • Mapeamento: é uma forma de tradução entre os objetos de uma linguagem de programação e as tabelas de um banco de dados relacional.

Definição completa

É uma técnica de engenharia de software usada para conectar um banco de dados relacional e uma linguagem de programação orientada a objetos.

ORM

#DetectTheLogic

O ORM é chamado de Object-Relational Mapping (Mapeamento Object-Relacional) porque é uma técnica de mapeamento de objetos de uma linguagem de programação orientada a objetos com tabelas de um banco de dados relacional.

Usar

Para que

Em vez de escrever consultas SQL diretamente, os desenvolvedores podem interagir com objetos na linguagem de programação que representam os dados no banco de dados.

Quando e onde

Ele é usado em uma ampla variedade de aplicativos de software, desde aplicativos da Web até aplicativos de desktop e móveis. É especialmente útil em aplicativos que lidam com grandes quantidades de dados e requerem acesso eficiente ao banco de dados.

Como

  • Hibernar: ORM para Java.
  • Entity Framework: ORM para .NET/C#
  • Django ORM: ORM padrão para Django.
  • Sequela: ORM para Ruby.
  • SQLAlchemy: ORM para Python.
  • Eloquent: ORM para PHP que é utilizado no framework Laravel.

Praticar

Exercício

Você tem um aplicativo da web para uma loja online que vende eletrônicos. Você deve armazenar e gerenciar as informações de produtos, clientes, pedidos e transações financeiras usando uma linguagem OOP.

Método: SQL

Preciso criar o banco de dados, depois criar a tabela do cliente e poder inserir dados lá... mas não é tão útil considerando que não posso fazer isso diretamente da página da web

-- Criar um cliente:
INSERT INTO clientes (Nome, E-mail)
VALUES('nome do cliente', 'e-mail do cliente');

-- Leia todos os clientes:
SELECIONE * DE clientes;

-- Editar um cliente
ATUALIZAR clientes
SET Nome = 'novo nome do cliente', Email = 'novo email do cliente'
WHERE Id = id do cliente;

-- Excluir um cliente
EXCLUIR DE clientes
WHERE Id = id do cliente;
Enter fullscreen mode Exit fullscreen mode

Método: ORM

Com Csharp (Linguagem de Programação) E Entity Framework (ORM), posso fazer com que os dados cheguem diretamente ao banco de dados da página da web. O banco de dados que usarei será MySql e precisarei de coisas diferentes, mas posso destacar o DbContext que geralmente é usado neste ORM

classe pública MyDbContext : DbContext
     {
         // Adiciona a linha de conexão ao banco de dados no MySQL
         string interna readonly connectionString = "server=localhost;port=3306;database=dbclients";

         substituição protegida void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
         {
             // Declara o uso do MySQL e envia a linha de conexão e a versão do MySQL
             optionsBuilder.UseMySql(connectionString, new MySqlServerVersion(ServerVersion.AutoDetect(connectionString)));
         }
         // Declara a tabela a ser utilizada
         public DbSet<Client> Clientes { get; definir; }
     }
Enter fullscreen mode Exit fullscreen mode

Uma vez feita a conexão, vou precisar fazer as migrações e a partir daí posso começar a fazer determinadas funções diretamente do projeto.

Um exemplo é a função adicionar cliente:

// Função para adicionar um novo cliente ao banco de dados
static void AddClient(MyDbContext db)
{
     // Imprime uma mensagem para indicar que um novo cliente está sendo adicionado
     Console.WriteLine("\nAdicionando um novo cliente...");

     // Solicita ao usuário que insira o nome e o e-mail do cliente
     Console.Write("Nome: ");
     string nome = Console.ReadLine();
     Console.Write("E-mail: ");
     string email = Console.ReadLine();

     // Cria um novo objeto Cliente com os dados inseridos pelo usuário
     var novoCliente = novo Cliente
     {
         nome = nome,
         e-mail = e-mail
     };

     // Adiciona o novo objeto cliente ao banco de dados
     db.Clients.Add(newClient);

     //Salva as alterações no banco de dados
     db.SaveChanges();

     // Imprime uma mensagem para indicar que o novo cliente foi adicionado ao banco de dados
     Console.WriteLine($"Cliente adicionado: {newClient.Name} ({newClient.Email})");
}
Enter fullscreen mode Exit fullscreen mode

E funções semelhantes podem ser executadas para leitura, edição e exclusão.

E assim, você pode interagir com um banco de dados diretamente da sua aplicação, mesmo sem usar a linguagem SQL.

Importância

ORM tem vários benefícios:

  • Abstração de banco de dados
  • Redução do tempo de desenvolvimento
  • Portabilidade de código
  • Facilidade de manutenção
  • Segurança para ataques de injeção
  • Trabalhe de forma mais eficiente e rápida

Até a próxima

(Lembre-se) #DetectaLaLógica: ORM é chamado de Object-Relational Mapping (Mapeamento Object-Relacional) porque é uma técnica de mapeamento de objetos a partir de uma linguagem de programação orientada a objetos com tabelas de banco de dados relacional.

Você pode praticar este tópico em meu repositório GitHub (código da linguagem C#): https://github.com/danielabarazarte/DetectaLaLogica

Muito obrigado por ler, se meu post te ajudou, você pode dar um LIKE para que mais pessoas possam ler, você também pode comentar qualquer dúvida ou sugestão que você tenha e eu agradeço se você me seguir para ver mais posts deste estilo, obrigada <3.

Top comments (2)

Collapse
 
mpfdev profile image
Matheus 🇧🇷

Gostei bastante do seu post e acho que é uma ótima fonte de informação para desenvolvedores que estão começando e estão aprendendo sobre ORMs.

Adorei a forma clara que você escreveu o seu texto com uma linguagem simples.

Obrigado por compartilhar e continue compartilhando!

Collapse
 
ingeniela profile image
Daniela "Ingeniela" Barazarte

Muito obrigada por seu cometario!