Skip to content

Un proyecto de prueba para comprender el acceso a datos y el desarrollo de interfaces en Java, implementando una arquitectura modular, limpia y escalable.

Notifications You must be signed in to change notification settings

Fraancoboss/hibernate-sqlite-javafx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Proyecto de Login Seguro con JavaFX y Hibernate

Descripción General

Este proyecto es una aplicación de escritorio hecha en Java que muestra cómo construir un sistema de inicio de sesión con roles (admin y user), usando JavaFX para la interfaz gráfica y Hibernate para conectarse a una base de datos SQLite.

Sirve como ejemplo práctico de integración entre la interfaz (vista), la lógica de negocio (servicio) y la persistencia de datos (DAO y modelo).

Estructura del Proyecto

ad-di/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── accesointerfaz/login/addi/
│   │   │       ├── controller/   → Controladores de vistas (Login y Main)
│   │   │       ├── dao/          → Acceso a base de datos con Hibernate
│   │   │       ├── model/        → Entidades (clases mapeadas a la BD)
│   │   │       ├── service/      → Lógica de negocio y validaciones
│   │   │       ├── util/         → Configuración de Hibernate
│   │   │       ├── Launcher.java → Punto de entrada de la app
│   │   │       └── MainApp.java  → Carga la vista inicial
│   │   └── resources/
│   │       ├── accesointerfaz/login/addi/views/
│   │       │   ├── login.fxml    → Pantalla de inicio de sesión
│   │       │   └── main.fxml     → Panel principal (usuarios)
│   │       └── hibernate.cfg.xml → Configuración de la BD
│   └── test/                     → Tests (opcional)
│
├── pom.xml                       → Archivo de configuración de Maven
└── README.md                     → Este archivo

Requisitos Previos

Antes de ejecutar el proyecto, asegúrate de tener instalado:

Herramienta | Descripción | Versión | recomendada Java JDK | Kit de desarrollo | de Java | 17 o superior Maven | Gestor de dependencias | y ejecución | 3.9+ Git | Para clonar el repositorio | | Última versión SQLite | Motor de base de datos (se incluye en el driver) No requiere instalación extra

Cómo Desplegar y Ejecutar el Proyecto

1. Clonar el repositorio

Abre la terminal en la carpeta donde quieras guardar el proyecto y ejecuta:

git clone https://github.com/usuario/ad-di.git
cd ad-di

Si no tienes Git, instálalo con:

winget install --id Git.Git -e

2. Compilar y descargar dependencias

Maven se encargará automáticamente de descargar JavaFX, Hibernate y SQLite:

mvn clean install

Esto compila el código, descarga las dependencias y prepara el proyecto para ejecutarse.

3. Ejecutar la aplicación

Una vez compilado, puedes lanzarla directamente desde Maven:

mvn javafx:run

Si te aparece un aviso sobre “native access” de JavaFX, puedes ignorarlo. No afecta la ejecución ni la seguridad del proyecto.

Explicación Técnica (simple y clara)

Capa por capa

Capa | Qué hace | Archivos clave Vista (JavaFX) | Es la parte visual: pantallas .fxml con los campos, botones y etiquetas. | login.fxml, main.fxml Controlador | Conecta la interfaz con la lógica del programa. Reacciona a los botones y entradas del usuario. | LoginController.java, MainController.java Servicio | Aplica reglas de negocio (por ejemplo, verificar contraseñas, roles o evitar duplicados). | UsuarioService.java DAO (Data Access Object) | Se comunica directamente con la base de datos usando Hibernate. | UsuarioDAO.java Utilidad (Hibernate) | Configura la conexión con la base de datos (driver, dialecto, etc.). | HibernateUtil.java Modelo (Entidad) | Representa los datos que se guardan en la base de datos. | Usuario.java

Flujo del programa

graph TD
A[Launcher] --> B[MainApp]
B --> C[login.fxml]
C -->|Usuario hace login| D[LoginController]
D -->|Verifica credenciales| E[UsuarioService]
E -->|Consulta BD| F[UsuarioDAO]
F -->|Usa sesión de Hibernate| G[(SQLite Database)]
D -->|Login correcto| H[main.fxml]
H -->|Controlado por| I[MainController]
I -->|Carga lista de usuarios| E
Loading

Resumen en palabras simples:

Launcher arranca la aplicación.

MainApp carga la vista del login.

LoginController recibe el usuario y contraseña.

UsuarioService valida credenciales y rol.

UsuarioDAO accede a la base de datos SQLite usando Hibernate.

Si el login es correcto, se abre el panel principal (main.fxml).

El MainController muestra los usuarios y permite gestionarlos (si eres admin).

Base de Datos

La base de datos es SQLite, un archivo llamado loginapp.db que se crea automáticamente en la raíz del proyecto la primera vez que ejecutas la app.

Estructura de la tabla usuarios:

Campo Tipo Descripción id INTEGER (PK, autoincrement) Identificador único nombre TEXT (único, no nulo) Nombre de usuario apellido TEXT Apellido rol TEXT (no nulo) Puede ser "admin" o "user" password TEXT (no nulo) Contraseña (en texto plano por ahora)

El mapeo entre esta tabla y el código lo hace Hibernate automáticamente mediante las anotaciones de Usuario.java.

Validación de Contraseñas

El servicio (UsuarioService) valida que la contraseña sea segura con una expresión regular. Debe cumplir:

Mínimo 8 caracteres.

Al menos una mayúscula, una minúscula, un número y un símbolo.

Ejemplo válido:

P4ssword!

Roles de Usuario

Rol Permisos Admin Crear, listar y eliminar usuarios. User Solo puede iniciar sesión, sin acceso a gestión.

Seguridad y futuras mejoras

Actualmente las contraseñas no están cifradas (solo validadas). Este diseño se mantiene así para que el flujo sea más fácil de entender.

Mejoras recomendadas:

Implementar cifrado con BCrypt en UsuarioService.

Añadir un sistema de logs para registrar inicios de sesión.

Crear un fichero de configuración externo para cambiar el tipo de base de datos fácilmente (MySQL, PostgreSQL, etc.).

Consejos de uso y solución de errores

Situación Solución El login no abre el panel principal Verifica el nombre de usuario en la BD o borra el archivo loginapp.db para regenerarlo. Error “SessionFactory” Comprueba que hibernate.cfg.xml está en resources. Warnings sobre “Unsafe” o “native access” Ignóralos. Son avisos de JavaFX internos, no errores tuyos. Tabla vacía al iniciar Agrega usuarios nuevos desde el panel de admin.

Conceptos que aprenderás con este proyecto

  • Cómo estructurar una app JavaFX con múltiples vistas.

  • Cómo aplicar el patrón MVC + DAO.

  • Cómo integrar Hibernate sin frameworks externos.

  • Cómo validar datos y roles desde el servicio.

  • Cómo conectar y persistir datos en SQLite sin escribir SQL manualmente.

Autor

Fran Proyecto educativo desarrollado durante el módulo de Acceso a Datos y Desarrollo de Interfaces (DAM). Inspirado en buenas prácticas de arquitectura limpia y seguridad básica en entornos Java.

Licencia

Este proyecto se distribuye bajo la licencia MIT, de uso libre con fines educativos.

About

Un proyecto de prueba para comprender el acceso a datos y el desarrollo de interfaces en Java, implementando una arquitectura modular, limpia y escalable.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages