Volver a la página principal
domingo 7 julio 2024
75

Listado de los ORMs mas utilizados

Introducción

Los Mapeadores de Objetos Relacionales (ORM, por sus siglas en inglés) son herramientas esenciales en el desarrollo de software que facilitan la interacción entre aplicaciones y bases de datos relacionales. Un ORM permite a los desarrolladores manipular bases de datos utilizando el paradigma de la programación orientada a objetos, evitando así la escritura manual de consultas SQL. En este artículo, exploraremos algunos de los ORM más populares en varios lenguajes de programación, ofreciendo una visión técnica y ejemplos de uso.

1. Python

Django ORM

El ORM de Django es uno de los más completos y robustos en el ecosistema Python. Permite la definición de modelos a través de clases y maneja automáticamente las migraciones de bases de datos.

Ejemplo:

from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=100)
    birth_date = models.DateField()

class Book(models.Model):
    title = models.CharField(max_length=200)
    author = models.ForeignKey(Author, on_delete=models.CASCADE)

SQLAlchemy

SQLAlchemy es conocido por su flexibilidad y potencia. Ofrece tanto un ORM completo como un toolkit SQL. Es altamente configurable y adecuado para aplicaciones complejas.

Ejemplo:

from sqlalchemy import create_engine, Column, Integer, String, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship, sessionmaker

Base = declarative_base()

class Author(Base):
    __tablename__ = 'authors'
    id = Column(Integer, primary_key=True)
    name = Column(String)

class Book(Base):
    __tablename__ = 'books'
    id = Column(Integer, primary_key=True)
    title = Column(String)
    author_id = Column(Integer, ForeignKey('authors.id'))
    author = relationship('Author')

engine = create_engine('sqlite:///books.db')
Base.metadata.create_all(engine)

2. Java

Hibernate

Hibernate es el ORM más utilizado en el ecosistema Java. Ofrece una integración profunda con el framework Spring y es muy eficiente en la gestión de grandes volúmenes de datos.

Ejemplo:

import javax.persistence.*;

@Entity
public class Author {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private Date birthDate;

    // Getters and Setters
}

@Entity
public class Book {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String title;

    @ManyToOne
    @JoinColumn(name = "author_id")
    private Author author;

    // Getters and Setters
}

3. JavaScript (Node.js)

Sequelize

Sequelize es un ORM prometedor para Node.js que soporta varias bases de datos SQL. Es muy fácil de usar y configurar, lo que lo hace popular entre los desarrolladores de JavaScript.

Ejemplo:

const { Sequelize, DataTypes, Model } = require('sequelize');
const sequelize = new Sequelize('sqlite::memory:');

class Author extends Model {}
Author.init({
  name: DataTypes.STRING,
  birthDate: DataTypes.DATE,
}, { sequelize, modelName: 'author' });

class Book extends Model {}
Book.init({
  title: DataTypes.STRING,
}, { sequelize, modelName: 'book' });

Book.belongsTo(Author);
sequelize.sync();

4. Ruby

ActiveRecord

ActiveRecord es el ORM predeterminado para Ruby on Rails. Es conocido por su simplicidad y convención sobre configuración, lo que lo hace extremadamente fácil de usar.

Ejemplo:

class Author < ApplicationRecord
  has_many :books
end

class Book < ApplicationRecord
  belongs_to :author
end

5. PHP

Eloquent (Laravel)

Eloquent es el ORM que viene con Laravel. Es poderoso y a la vez fácil de usar, permitiendo a los desarrolladores definir relaciones complejas con una sintaxis intuitiva.

Ejemplo:

use Illuminate\Database\Eloquent\Model;

class Author extends Model {
    public function books() {
        return $this->hasMany(Book::class);
    }
}

class Book extends Model {
    public function author() {
        return $this->belongsTo(Author::class);
    }
}

Doctrine

Doctrine es un ORM flexible y potente para PHP, utilizado frecuentemente en el framework Symfony. Ofrece características avanzadas como el soporte para repositorios y criterios.

Ejemplo:

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="authors")
 */
class Author {
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;

    /** @ORM\Column(type="string") */
    private $name;

    /** @ORM\Column(type="date") */
    private $birthDate;

    // Getters and setters...
}

/**
 * @ORM\Entity
 * @ORM\Table(name="books")
 */
class Book {
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;

    /** @ORM\Column(type="string") */
    private $title;

    /**
     * @ORM\ManyToOne(targetEntity="Author")
     * @ORM\JoinColumn(name="author_id", referencedColumnName="id")
     */
    private $author;

    // Getters and setters...
}

6. C#

Entity Framework

Entity Framework es el ORM más popular en el ecosistema .NET. Soporta tanto un enfoque de "database-first" como de "code-first", lo que ofrece gran flexibilidad a los desarrolladores.

Ejemplo:

public class Author {
    public int AuthorId { get; set; }
    public string Name { get; set; }
    public DateTime BirthDate { get; set; }
    public ICollection<Book> Books { get; set; }
}

public class Book {
    public int BookId { get; set; }
    public string Title { get; set; }
    public int AuthorId { get; set; }
    public Author Author { get; set; }
}

7. Go

GORM

GORM es el ORM más utilizado en el ecosistema Go. Es potente y eficiente, ofreciendo una buena integración con el lenguaje y un rendimiento optimizado.

Ejemplo:

import (
    "gorm.io/driver/sqlite"
    "gorm.io/gorm"
)

type Author struct {
    gorm.Model
    Name      string
    BirthDate time.Time
    Books     []Book
}

type Book struct {
    gorm.Model
    Title    string
    AuthorID uint
}

func main() {
    db, _ := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
    db.AutoMigrate(&Author{}, &Book{})
}

Conclusión

Los ORM son herramientas esenciales que simplifican la interacción con bases de datos relacionales en diversos lenguajes de programación. Desde Django ORM y SQLAlchemy en Python, hasta Hibernate en Java, Doctrine en PHP y GORM en Go, cada ORM tiene sus fortalezas y es crucial seleccionar el adecuado según las necesidades del proyecto y el ecosistema del lenguaje. Este artículo ha ofrecido una visión técnica y ejemplos prácticos para ayudar a los desarrolladores a tomar decisiones informadas sobre qué ORM utilizar en sus proyectos.

Etiquetas:
ranking
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer