Repository navigation
auto tema4
Responde cada pregunta antes de ver la respuesta.
¿Cómo se implementa la herencia en Java entre PersonaVO y AlumnoVO?
- A)
AlumnoVO implements PersonaVO - B)
AlumnoVO = new PersonaVO() - C)
AlumnoVO uses PersonaVO - D)
AlumnoVO extends PersonaVO
Ver respuesta
✅ D) AlumnoVO extends PersonaVO
💡 Con extends, AlumnoVO hereda todos los atributos y métodos de PersonaVO (como codigo y nombre) y puede agregar los suyos propios (como telefono). Es la herencia de clases en Java.
¿Cómo se modela la herencia Persona → Alumno en la base de datos?
- A) Con una única tabla
alumnosque tiene todos los campos de persona y alumno - B) Con una tabla
personasque tiene una columnatipopara distinguir personas de alumnos - C) Con dos tablas:
personas(datos comunes) yalumnos(datos específicos), dondealumnos.codigoes PK y FK que referencia apersonas.codigo - D) Con una vista (VIEW) de MySQL que combina los datos
Ver respuesta
✅ C) Con dos tablas: personas (datos comunes) y alumnos (datos específicos), donde alumnos.codigo es PK y FK que referencia a personas.codigo
💡 Este es el patrón "Herencia de Tabla Dividida". La clave primaria de alumnos es también la clave foránea a personas, garantizando que todo alumno sea también una persona.
¿Por qué el método agregarAlumno() en el AlumnoDAO necesita hacer DOS INSERTs?
- A) Porque hay que insertar dos veces por seguridad en caso de fallo
- B) Porque primero inserta los datos comunes en la tabla
personasy luego los datos específicos en la tablaalumnos - C) Porque MySQL requiere dos comandos separados para cualquier inserción
- D) Porque el primer INSERT es de prueba y el segundo es el definitivo
Ver respuesta
✅ B) Porque primero inserta los datos comunes en la tabla personas y luego los datos específicos en la tabla alumnos
💡 Como los datos están en dos tablas, hay que hacer dos INSERTs: primero en personas (nombre, etc.) y luego en alumnos (telefono, el mismo código como FK). Ambos deben ejecutarse como una transacción atómica.
¿Por qué se necesita una transacción JDBC al agregar un alumno?
- A) Para que la inserción sea más rápida
- B) Para poder hacer los dos INSERTs en paralelo
- C) Porque MySQL no acepta dos INSERTs sin transacción
- D) Para que si el INSERT en
personastiene éxito pero el INSERT enalumnosfalla, se revierta el primero (atomicidad)
Ver respuesta
✅ D) Para que si el INSERT en personas tiene éxito pero el INSERT en alumnos falla, se revierta el primero (atomicidad)
💡 Sin transacción, podría quedar una persona en la tabla personas sin su entrada en alumnos, dejando la BD en un estado inconsistente. La transacción garantiza "todo o nada".
¿Qué hace ON DELETE CASCADE en la FK de la tabla alumnos?
- A) Cuando se elimina una persona de la tabla
personas, elimina automáticamente su registro enalumnos - B) Elimina automáticamente todos los alumnos al borrar la base de datos
- C) Impide eliminar personas que tengan alumnos asociados
- D) Crea una copia de seguridad antes de eliminar
Ver respuesta
✅ A) Cuando se elimina una persona de la tabla personas, elimina automáticamente su registro en alumnos
💡 ON DELETE CASCADE mantiene la integridad referencial automáticamente. Sin él, intentar eliminar una persona que tiene una fila en alumnos daría un error de FK. Con CASCADE, MySQL borra ambos registros.
¿Qué tipo de SQL se usa para mostrar la lista de alumnos con sus datos de persona?
- A) Un SELECT de la tabla
alumnossolamente - B) Un JOIN entre
personasyalumnospara combinar los datos de ambas tablas - C) Dos SELECTs separados, uno por tabla
- D) Un UNION entre las dos tablas
Ver respuesta
✅ B) Un JOIN entre personas y alumnos para combinar los datos de ambas tablas
💡 Para mostrar el nombre (de personas) junto con el teléfono (de alumnos), se usa SELECT p.nombre, a.telefono FROM personas p JOIN alumnos a ON p.codigo = a.codigo. El JOIN combina las filas relacionadas.
¿Qué hace connection.setAutoCommit(false) antes de los dos INSERTs?
- A) Deshabilita la autocompleción de SQL en el editor
- B) Hace que la conexión sea de solo lectura
- C) Desactiva el modo en que cada operación SQL se confirma automáticamente, agrupando los INSERTs en una transacción que se confirma juntos con
commit() - D) Configura la conexión para usar el protocolo SSL
Ver respuesta
✅ C) Desactiva el modo en que cada operación SQL se confirma automáticamente, agrupando los INSERTs en una transacción que se confirma juntos con commit()
💡 Por defecto, JDBC ejecuta y confirma cada operación inmediatamente (auto-commit). Con setAutoCommit(false), las operaciones quedan pendientes hasta llamar a commit() (éxito) o rollback() (fallo).
¿Cuál es el orden correcto para insertar un alumno con transacción JDBC?
- A) setAutoCommit(false) → INSERT personas → INSERT alumnos → commit → (catch: rollback)
- B) INSERT alumnos → INSERT personas → commit
- C) commit → INSERT personas → INSERT alumnos → setAutoCommit(true)
- D) INSERT personas → commit → INSERT alumnos → commit
Ver respuesta
✅ A) setAutoCommit(false) → INSERT personas → INSERT alumnos → commit → (catch: rollback)
💡 El orden es: 1) iniciar transacción (setAutoCommit(false)), 2) INSERT en tabla padre (personas), 3) INSERT en tabla hija (alumnos), 4) si todo OK: commit(), 5) si hay error: rollback() en el catch.
- Introducción a VS Code
- Primeros pasos en VS Code
- Preparación del entorno Java Web
- ☁️ Cómo usar GitHub Codespace
Tema 1: Manejo básico de Java Web
- Introducción a Maven
- Ciclo de una petición web
- JSP con Scriptlets
- ¿Qué es un archivo JSP?
- Comparativa JSP Scriptlets vs ELJSTL
- ¿Qué es un Servlet?
- Mi primer formulario con Servlet
- HTTP Sessions
Tema 2: Modelo Vista Controlador (MVC)
- ¿Qué es el MVC?
-
Ejemplo básico MVC (MINI-CRUD)
- VISTA-index
- VISTA- Agregar Persona
- VISTA- Listar Personas
- CONTROLADOR- PersonaControladorServlet
- MODELO- DAO/VO
- CONTROLADOR- PersonaControladorServlet2
- VISTA- Editar Persona
- VISTA- Listar Persona
- Validación de unicidad de código
- Validación de campos obligatorios
- Comparativa persona-form.jsp
- Comparativa JSP puro vs MVC
Tema 3: Conexión a Base de Datos
Tema 4: Base de Datos con herencia
