Este repositorio contiene la colección de proyectos, laboratorios y evaluaciones desarrollados durante la asignatura de Lenguajes de Programación 2. El enfoque principal es el desarrollo Backend con Java Spring Boot, la implementación de seguridad, persistencia de datos (SQL y NoSQL) y la integración con Frontends modernos.
Autor: Sebastián López Osorno Tecnología Principal: Java 17 / Spring Boot 3
El ecosistema de desarrollo abarca las siguientes tecnologías:
| Área | Tecnologías |
|---|---|
| Backend | Java 17, Spring Boot (Web, Data JPA, Security, JDBC), Maven |
| Frontend | Thymeleaf, Bootstrap 5, JavaScript (SweetAlert2), React.js, Tailwind CSS |
| Base de Datos | MySQL, H2 (In-memory), Supabase (PostgreSQL) |
| Herramientas | Postman, Git, IntelliJ IDEA / VS Code |
El repositorio se organiza en módulos independientes según el progreso del aprendizaje:
Ubicación: /Parcial1
Este es el proyecto más robusto del repositorio. Es una aplicación web monolítica MVC para la gestión de un comercio electrónico.
- Características Principales:
- Seguridad: Implementación de
Spring Securitycon encriptaciónBCrypty manejo de sesiones. - Roles: Diferenciación entre
Administrador(CRUD completo) yCliente(Carrito de compras). - Lógica de Negocio:
- Gestión de Inventario (Productos y Stock).
- Sistema de Facturación (Cabecera
Purchasey DetalleDetail). - Validaciones de Backend (
@Valid,BindingResult).
- Frontend: Vistas dinámicas con Thymeleaf y alertas interactivas con SweetAlert2.
- Base de Datos: MySQL con relaciones One-To-Many y Many-To-One.
- Seguridad: Implementación de
Ubicación: /demo y /demo_h2
Proyectos base para entender los fundamentos del framework Spring.
- Demo 1 (
/demo):- Manejo de controladores (
@Controller). - Inyección de dependencias y paso de parámetros por URL (
@RequestParam,@PathVariable). - Vistas básicas con Thymeleaf.
- Manejo de controladores (
- Demo H2 (
/demo_h2):- Introducción a JPA/Hibernate.
- Uso de base de datos en memoria H2 para prototipado rápido.
- Implementación del patrón DAO (Data Access Object).
Ubicación: /react_app
Proyecto separado para demostrar la capacidad de crear interfaces modernas desacopladas del backend.
- Tecnología: React.js + Tailwind CSS.
- Objetivo: Consumo de APIs REST (potencialmente conectada a los backends de Spring Boot).
- Componentes: Listados de estudiantes y estilización moderna.
Ubicación: /SupaBase
Integración de Spring Boot con servicios BaaS (Backend as a Service).
- Objetivo: Conectar la aplicación Java con Supabase (PostgreSQL en la nube).
- Funcionalidad: Gestión de usuarios remota y persistencia en la nube.
Cada subcarpeta es un proyecto independiente (generalmente un proyecto Maven).
- Java JDK 17 o superior.
- Maven (opcional, ya que los proyectos incluyen el wrapper
mvnw). - MySQL Server (Para el proyecto
Parcial1). - Node.js (Para el proyecto
react_app).
- Navega a la carpeta del proyecto (ej.
Parcial1):cd Parcial1 - Configura la base de datos en
src/main/resources/application.properties(si aplica). - Ejecuta la aplicación:
./mvnw spring-boot:run
- Accede desde el navegador (usualmente
http://localhost:8090o el puerto configurado).
- Navega a la carpeta:
cd react_app - Instala dependencias y ejecuta:
npm install npm start
A lo largo de estos talleres se han aplicado patrones de diseño y arquitecturas estándar de la industria:
- Patrón MVC (Modelo-Vista-Controlador): Separación clara de la lógica de negocio, la interfaz de usuario y el control de flujo.
- Inyección de Dependencias (DI): Uso del contenedor de Spring para gestionar los beans (
@Autowired,@Service,@Repository). - ORM (Object-Relational Mapping): Mapeo de objetos Java a tablas relacionales usando Hibernate/JPA.
- Seguridad Web: Autenticación y Autorización basada en roles.
- ✅ Parcial 1: Completado y funcional.
- ✅ Talleres Básicos: Completados.
- 🚧 React App: En desarrollo/Integración.
Documentación generada para la asignatura TLP2 - Ingeniería Informática.
Para que esta documentación brille aún más, especialmente la sección del Parcial 1, te sugiero agregar un diagrama de la base de datos, ya que es el proyecto más complejo.
¿Te gustaría que genere el código Mermaid para el diagrama Entidad-Relación (ER) del Parcial 1 basándome en tus entidades (User, Product, Purchase, Detail) para que lo incluyas en el README?