Aunque podríamos desarrollar una aplicación web completa usando instrucciones SQL, estas pueden convertir nuestro código en uno muy verboso, complejo de entender y difícil de modificar.
Alternativamente, los desarrolladores backend usamos lo que se conocen como Object Relational Mapping, u ORM por sus siglas. Estas librerías se encargan de ofrecer clases y métodos para que podamos manipular la base de datos usando programación orientada a objetos.
Internamente, estos métodos se traducen a SQL para que las operaciones puedan ejecutarse sobre la base de datos. Además de eso, las instrucciones generadas por un ORM son usualmente seguras y optimizadas, esto porque los mejores ORM’s tienen años en desarrollo y son de código abierto, permitiendo que los mismos usuarios del ORM reporten y solucionen bugs, de modo que los resultados del ORM están en constante mejora.
Si aún no te imaginas cómo podrían verse las consultas SQL con objetos, considera este ejemplo con Sequelizejs, un ORM para NodeJS.
La inserción a nuestra tabla tasks pasaría de verse así:
db.run(`INSERT INTO tasks (description) VALUES (?)`,req.body.description);
A verse así:
Task.create({
description: req.body.description
});
Como puedes ver, el ejemplo con objetos y métodos es más legible y claro que la instrucción SQL, por otro lado, aprender SQL es mucho más complejo que aprender a usar un ORM, como podrás ver del ejemplo mismo.
Sin embargo, es importante mencionar que para sacar el mayor provecho de un ORM, y poder optimizar las sentencias que se generan, sí debes saber SQL y fundamentos de bases de datos relacionales, recuerda que para eso puedes ver el Curso Profesional de Bases de Datos aquí mismo en CódigoFacilito.
Por otro lado, uno de los grandes beneficios de usar un ORM, es que nos permite intercambiar el motor de base de datos, sin tener que modificar el código que utilizamos, simplemente le decimos, ahora usa sqlite, y ahora usa Postgres, y la librería se encargará de generar el código SQL para el motor indicado.
Este es un beneficio muy valioso considerando que ciertos motores están mejor diseñados para tareas específicas, sqlite para el desarrollo del sitio, Postgres para el entorno en producción, etc.
En general, te recomiendo que, a menos que tengas una razón especial para no usar un ORM, siempre los utilices, protegerán tu aplicación de posibles ataques por una base de datos mal configurada, harán del motor de base de datos prescindible, de manera que no casarás tu aplicación con uno de ellos, y además las operaciones serán más fáciles de comprender y razonar cuando ves tu código, que si usas SQL.
-
Módulo 1 | 8 clases
Introducción
expand_more-
play_circle_outline
Clase 1
Introducción al Curso Profesional de Backend
-
play_circle_outline
Clase 2
Backend y Frontend
-
play_circle_outline
Clase 3
La especialidad Backend
-
play_circle_outline
Clase 4
Qué veremos en este curso
-
play_circle_outline
Clase 5
Conocimientos previos
-
play_circle_outline
Clase 6
Stack de Tecnologías
-
play_circle_outline
Clase 7
Configurar entorno de trabajo (Windows)
-
play_circle_outline
Clase 8
Configurar entorno de trabajo (MacOS)
-
-
Módulo 2 | 19 clases
Http
expand_more-
play_circle_outline
Clase 1
Cómo funciona un servidor web
-
play_circle_outline
Clase 2
Qué es NodeJS y qué es Express
-
play_circle_outline
Clase 3
El protocolo Http
-
play_circle_outline
Clase 4
Verbos Http
-
play_circle_outline
Clase 5
Http con cURL
-
play_circle_outline
Clase 6
Direcciones web
-
play_circle_outline
Clase 7
Creando nuestro primer servidor
-
play_circle_outline
Clase 8
Express
-
play_circle_outline
Clase 9
Postman
-
play_circle_outline
Clase 10
Recibir datos de la petición
-
play_circle_outline
Clase 11
Datos con POST
-
play_circle_outline
Clase 12
Enviar HTML
-
play_circle_outline
Clase 13
Servir archivos estáticos
-
play_circle_outline
Clase 14
Motores de vistas
-
play_circle_outline
Clase 15
Qué es el caché
-
play_circle_outline
Clase 16
Tipos de caché
-
play_circle_outline
Clase 17
Caché de archivos estáticos
-
play_circle_outline
Clase 18
Qué son las cookies y las sesiones
-
play_circle_outline
Clase 19
Cookies
-
-
Módulo 3 | 11 clases
Bases de Datos
expand_more-
play_circle_outline
Clase 1
El lenguaje SQL
-
play_circle_outline
Clase 2
Configurando SQLite
-
play_circle_outline
Clase 3
Qué son las bases de datos y por qué las usamos
-
play_circle_outline
Clase 4
Drivers de conexión
-
play_circle_outline
Clase 5
Crear una tabla (Primer consulta)
-
play_circle_outline
Clase 6
Qué es un CRUD
-
play_circle_outline
Clase 7
Insertar registros en la Base de Datos
-
play_circle_outline
Clase 8
Limpiar parámetros (sanitize)
-
play_arrow
Clase 9
Qué es un ORM
-
play_circle_outline
Clase 10
Configurar SequelizeJS
-
play_circle_outline
Clase 11
Bases de datos relacionales y no relacionales
-
-
Módulo 4 | 24 clases
Buenas prácticas de desarrollo.
expand_more-
play_circle_outline
Clase 1
Presentación del bloque
-
play_circle_outline
Clase 2
Qué es el MVC
-
play_circle_outline
Clase 3
Organizar un proyecto MVC
-
play_circle_outline
Clase 4
Qué son las migraciones
-
play_circle_outline
Clase 5
CLI de Sequelize
-
play_circle_outline
Clase 6
Generando migraciones
-
play_circle_outline
Clase 7
Modelos
-
play_circle_outline
Clase 8
Controladores
-
play_circle_outline
Clase 9
Vistas
-
play_circle_outline
Clase 10
Seeders
-
play_circle_outline
Clase 11
Integrando todo
-
play_circle_outline
Clase 12
Qué es REST
-
play_circle_outline
Clase 13
REST en la práctica
-
play_circle_outline
Clase 14
Verbos Http en REST
-
play_circle_outline
Clase 15
Rutas REST en Express
-
play_circle_outline
Clase 16
Crear nuevos registros
-
play_circle_outline
Clase 17
Formularios
-
play_circle_outline
Clase 18
Mostrar registros
-
play_circle_outline
Clase 19
Vistas para todos los registros
-
play_circle_outline
Clase 20
Identificadores únicos
-
play_circle_outline
Clase 21
Consulta individual de recursos
-
play_circle_outline
Clase 22
Actualizar registros
-
play_circle_outline
Clase 23
Formularios con PUT, PATCH y DELETE
-
play_circle_outline
Clase 24
Eliminar registros
-
-
Módulo 5 | 14 clases
Autenticación
expand_more-
play_circle_outline
Clase 1
Explicando cómo funciona la autenticación de usuarios
-
play_circle_outline
Clase 2
Formulario de registro
-
play_circle_outline
Clase 3
Modelos y migración de usuarios
-
play_circle_outline
Clase 4
Validaciones
-
play_circle_outline
Clase 5
Validaciones en la base de datos y el modelo
-
play_circle_outline
Clase 6
Encriptar el password
-
play_circle_outline
Clase 7
Creación de usuarios
-
play_circle_outline
Clase 8
Inicio de sesión
-
play_circle_outline
Clase 9
Autenticación
-
play_circle_outline
Clase 10
Manejo de sesiones
-
play_circle_outline
Clase 11
Qué es un middleware
-
play_circle_outline
Clase 12
Buscar usuario autenticado
-
play_circle_outline
Clase 13
Cerrar sesión
-
play_circle_outline
Clase 14
Middlewares para protección de rutas
-
-
Módulo 6 | 14 clases
Relaciones en la base de datos.
expand_more-
play_circle_outline
Clase 1
Fundamentos de relaciones en la base de datos
-
play_circle_outline
Clase 2
Relaciones uno a muchos - El esquema
-
play_circle_outline
Clase 3
Relaciones uno a muchos - Los modelos
-
play_circle_outline
Clase 4
Nombres para asociaciones
-
play_circle_outline
Clase 5
Guardar relación uno a muchos
-
play_circle_outline
Clase 6
Relaciones en un proyecto real
-
play_circle_outline
Clase 7
Eager loading (Cargado anticipado)
-
play_circle_outline
Clase 8
Ejercicio - Implementa tu propio CRUD
-
play_circle_outline
Clase 9
Relaciones muchos a muchos
-
play_circle_outline
Clase 10
Integrando CRUD de Categorías
-
play_circle_outline
Clase 11
Tabla asociativa
-
play_circle_outline
Clase 12
Definir relación muchos a muchos
-
play_circle_outline
Clase 13
Crear relaciones muchos a muchos
-
play_circle_outline
Clase 14
Mostrar objetos de una relación muchos a muchos
-
-
Módulo 7 | 5 clases
Websockets (realtime)
expand_more-
play_circle_outline
Clase 1
¿Qué son las Websockets?
-
play_circle_outline
Clase 2
Usuarios conectados en tiempo real
-
play_circle_outline
Clase 3
Comunicar el servidor Http y el servidor de Websockets
-
play_circle_outline
Clase 4
Enviar datos de la base de datos a los clientes
-
play_circle_outline
Clase 5
Control de comunicación por usuario en Websockets
-
-
Módulo 8 | 4 clases
Entorno de producción
expand_more -
check_circle_outlineMódulo 9
Examen del curso
expand_more-
done_all
Examen
Examen final del curso
-