DEV Community

Diego Henrique
Diego Henrique

Posted on

Explicando ORM (Object Relational Mapping)

Conforme você avança em seus estudos de programação, inevitavelmente chegará à parte de bancos de dados, e isso é óbvio. Em algum momento de sua aplicação, você precisará armazenar grandes quantidades de dados, e é aí que os tão famosos bancos de dados entrarão em cena.

Primeiro, vejamos abaixo como seria uma implementação de operação DEL em um banco de dados em nossa aplicação, sem usar uma ferramenta ORM.

Exemplo simples de código sem ORM em Java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class DeleteStudent {
    public static void main(String[] args) {
        String url = "jdbc:sqlite:exemplo.db";
        int estudanteId = 1;

        try (Connection conn = DriverManager.getConnection(url);
             PreparedStatement pstmt = conn.prepareStatement("DELETE FROM estudantes WHERE id = ?")) {
            pstmt.setInt(1, estudanteId);
            int rowsDeleted = pstmt.executeUpdate();

            if (rowsDeleted > 0) {
                System.out.println("Estudante excluído com sucesso.");
            } else {
                System.out.println("Estudante não encontrado.");
            }
        } catch (Exception e) {
            System.err.println("Erro ao excluir o estudante: " + e.getMessage());
        }
    }
}

Enter fullscreen mode Exit fullscreen mode

Neste código, estamos usando SQL para excluir um estudante do banco de dados. Perceba como o código ficou extenso e, para alguns, até mesmo complexo. Bem, esse é o desafio de programar sem usar o valioso ORM. Agora, deixe-me mostrar uma versão semelhante de código, mas usando uma ferramenta ORM.

Exemplo simples de código com ORM em Java

   public void delete(Estudante estudante) {
        this.filmRepositoryJPA.delete(estudante);
    }

Enter fullscreen mode Exit fullscreen mode

Parece brincadeira, não é? Claro, esse código é apenas uma implementação simples, mas ambos seguem o mesmo objetivo.

O problema que ORM veio resolver.

Hoje em dia, é quase padrão que sua linguagem preferida seja Orientada a Objetos (OOP). Nesse paradigma, tudo é tratado como objeto, com suas propriedades e comportamentos. No entanto, quando se trata de bancos de dados, as coisas mudam, já que a maioria dos bancos de dados tem sua própria maneira de lidar com informações, usando tabelas, colunas e linhas. Você pode imaginar que essas duas formas distintas de trabalhar não se encaixam bem, certo?

Foi aí que o ORM entrou em cena, para facilitar essa relação, sem que o programador precise lidar com cada implementação. Dessa forma, o programador pode usar os próprios atributos da classe/objeto para recuperar os dados do banco.

Exemplo de atualização do usuário por meio de seus atributos

public void atualizarEstudante(Long id, String novoNome, int novaIdade) {
        Student student = studentRepository.findById(id).orElse(null);

        if (student != null) {
            student.setNome(novoNome);
            student.setIdade(novaIdade);
            studentRepository.save(student);
        }
    }
Enter fullscreen mode Exit fullscreen mode

É importante mencionar que, nestes exemplos, estou usando o Spring Boot com o Hibernate (nosso ORM em Java).

Conclusão

Como podemos observar, o ORM veio para simplificar a vida do programador, eliminando a necessidade de passar horas adaptando sua aplicação para funcionar em diferentes paradigmas. Claro que há muito mais a ser explorado sobre essa incrível ferramenta, e recomendo que você leia a documentação específica de cada implementação em sua linguagem favorita. Deixo aqui o link para a documentação do Hibernate com Java, que foi usado em nossos exemplos.
Hibernate

Muito obrigado por ler até aqui!

Top comments (3)

Collapse
 
egotting profile image
henrico

o rei do springboot

Collapse
 
raposy profile image
Kaminski

Fico muito bom parabéns amor te amo muitao

Collapse
 
01dri profile image
Diego Henrique

Te amo amor <3