Herramientas de usuario

Herramientas del sitio


ejercicios:unidad04
no way to compare when less than two revisions

Diferencias

Muestra las diferencias entre dos versiones de la página.


ejercicios:unidad04 [2023/04/07 21:26] (actual) – creado - editor externo 127.0.0.1
Línea 1: Línea 1:
 +====== Claves Primarias y Tipos de datos ======
 +En esta unidad vamos a generar automáticamente las claves primarias, crear componentes de Hibernate y añadir enumerados.
  
 +En los ejercicios de esta unidad se van a usar la siguientes clases Java (entidades).
 +
 +<uml>
 +class Seguro
 +Seguro : int idSeguro
 +Seguro : NIF nif
 +Seguro : String nombre
 +Seguro : String ape1
 +Seguro : String ape2
 +Seguro : int edad
 +Seguro : Sexo sexo
 +Seguro : boolean casado
 +Seguro : int numHijos
 +Seguro : boolean embarazada
 +Seguro : Coberturas coberturas
 +Seguro : Enfermedades enfermedades
 +Seguro : Date fechaCreacion
 +
 +class Coberturas
 +Coberturas : boolean oftalmologia
 +Coberturas : boolean dental
 +Coberturas : boolean fecundacionInVitro
 +
 +class Enfermedades
 +Enfermedades: boolean corazon
 +Enfermedades: boolean estomacal
 +Enfermedades: boolean rinyones
 +Enfermedades: boolean alergia
 +Enfermedades: String nombreAlergia
 +
 +class NIF
 +NIF:nif
 +
 +class Sexo <<Enumeration>>
 +Sexo : Hombre
 +Sexo : Mujer
 +
 +class AsistenciaMedica 
 +AsistenciaMedica: int idAsistenciaMedica
 +AsistenciaMedica: Seguro seguro
 +AsistenciaMedica: String breveDescripcion
 +AsistenciaMedica: String lugar
 +AsistenciaMedica: String explicacion
 +AsistenciaMedica: TipoAsistencia tipoAsistencia
 +AsistenciaMedica: Date fecha
 +AsistenciaMedica: Date hora
 +AsistenciaMedica: BigDecimal importe
 +
 +class TipoAsistencia <<Enumeration>>
 +TipoAsistencia : Hospitalaria
 +TipoAsistencia : Ambulatoria
 +TipoAsistencia : CentroSalud
 +TipoAsistencia : Domiciliaria
 +
 +Coberturas  "1"-"1" Seguro
 +NIF  "1"--"1" Seguro
 +Sexo "1" -- "*" Seguro
 +Seguro "1"-"1" Enfermedades
 +
 +
 +Seguro "1"--"*" AsistenciaMedica
 +
 +AsistenciaMedica "*" - "1" TipoAsistencia
 +</uml>
 +
 +El modelo de tablas asociado a las entidades es el siguiente:
 +
 +<uml>
 +class Seguro <<Table>>
 +Seguro : INTEGER idSeguro
 +Seguro : VARCHAR nif
 +Seguro : VARCHAR nombre
 +Seguro : VARCHAR ape1
 +Seguro : VARCHAR ape2
 +Seguro : INTEGER edad
 +Seguro : INTEGER sexo
 +Seguro : TINYINT casado
 +Seguro : INTEGER numHijos
 +Seguro : TINYINT embarazada
 +Seguro : TINYINT oftalmologia
 +Seguro : TINYINT dental
 +Seguro : TINYINT fecundacionInVitro
 +Seguro : TINYINT corazon
 +Seguro : TINYINT estomacal
 +Seguro : TINYINT rinyones
 +Seguro : TINYINT alergia
 +Seguro : VARCHAR nombreAlergia
 +Seguro : TIMESTAMP fechaCreacion
 +
 +class AsistenciaMedica <<Table>>
 +AsistenciaMedica :  INTEGER IdAsistenciaMedica
 +AsistenciaMedica :  INTEGER IdSeguro
 +AsistenciaMedica :  VARCHAR breveDescripcion
 +AsistenciaMedica :  VARCHAR lugar
 +AsistenciaMedica :  TEXT explicacion
 +AsistenciaMedica :  VARCHAR TipoAsistencia
 +AsistenciaMedica :  DATE fecha
 +AsistenciaMedica :  TIME hora
 +AsistenciaMedica :  DECIMAL(10,2) importe
 +AsistenciaMedica :  INTEGER idx
 +
 +Seguro "1" -- "*" AsistenciaMedica 
 +</uml>
 +===== Ejercicio01 =====
 +Modifica el **Ejercicio01** de la unidad anterior para incluir las siguientes tareas:
 +
 +Siguiendo el diagrama de clases Java anterior:
 +  * Crea el enumerado ''TipoAsistencia'' y sus valores
 +  * Crea el enumerado ''Sexo'' y sus valores
 +  * Crea la clase ''NIF'' , su propiedad  y los métodos //get/set//
 +  * Crea la clase ''Coberturas'' , sus propiedades y los métodos //get/set//
 +  * Crea la clase ''Enfermedades'' , sus propiedades y los métodos //get/set//
 +  * Modifica la clase ''Seguro'' para incluir las nuevas propiedades y los nuevos métodos //get/set//
 +  * En la clase ''Seguro'' haz que la propiedad ''nif'' sea del tipo ''NIF'' pero que en Hibernate sea un componente en vez de una nueva entidad.
 +  * Haz que las propiedades ''enfermedades'' y ''coberturas'' sean componentes de la clase ''Seguro''.
 +  * Modifica la clase ''AsistenciaMedica'' para incluir las nuevas propiedades y los nuevos métodos //get/set//
 +  * Modifica la configuración de Hibernate de las clases ''Seguro'' y ''AsistenciaMedica'' para indicar a Hibernate que la base de datos genera automáticamente las claves primarias usando un autonumérico.
 +  * Haz que en la propiedad ''fecha'' de la clase ''AsistenciaMedica'' solo se guarde la fecha y **no** la hora.
 +  * Haz que en la propiedad ''hora'' de la clase ''AsistenciaMedica'' solo se guarde la hora y **no** la fecha.
 +  * Haz que en la propiedad ''explicacion'' de la clase ''AsistenciaMedica'' se puedan guardar más de 255 caracteres.
 +  * Haz que en la propiedad ''importe'' de la clase ''AsistenciaMedica'' se guarde como un ''BigDecimal''.
 +  * Al configurar los enumerados ten en cuenta el tipo de datos que se ha definido en la base de datos.
 +
 +Para ello usa los ficheros "''.hbm.xml''" de Hibernate.
 +
 +La clase ''Main'' deberá incluir el siguiente código de creación de los distintos objetos:
 +<code java 1>
 +SimpleDateFormat sdfFecha=new SimpleDateFormat("dd/MM/yyyy");
 +sdfFecha.setLenient(false);
 +SimpleDateFormat sdfHora=new SimpleDateFormat("HH:mm:ss");
 +sdfHora.setLenient(false);
 +Seguro seguro = new Seguro(new Nif("36254784E"), "Rosa", "Ramirez", "Arellano", 41, Sexo.Mujer, true, 1, false, new Coberturas(false, true, false), new Enfermedades(true, false, true, false, null), new Date());
 +AsistenciaMedica asistenciaMedica1 = new AsistenciaMedica(seguro, "Golpe en el brazo", "Madrid", "Fractura del radio derecho de la mano debido a golpe contundente con el suelo. Se escayola el brazo", TipoAsistencia.Hospitalaria, sdfFecha.parse("31/12/2013"),sdfHora.parse("11:21:45"), new BigDecimal("700.31"));
 +AsistenciaMedica asistenciaMedica2 = new AsistenciaMedica(seguro, "Fiebre alta", "Alzira", "El paciente presenta cuadro alto de fiabre con deficultad para respirar. Se recetan antibioticos.", TipoAsistencia.Ambulatoria, sdfFecha.parse("27/02/2013"), sdfHora.parse("12:34:16"), new BigDecimal("81.14"));
 +seguro.getAsistenciasMedicas().add(asistenciaMedica1);
 +seguro.getAsistenciasMedicas().add(asistenciaMedica2);
 +</code>
 +
 +Ahora añade a la clase ''Main'' el código de hibernate necesario para que al guardar el objeto ''seguro'' se guarde todo en la base de datos.
 +===== Ejercicio02 =====
 +Modifica el **Ejercicio02** de la unidad anterior para incluir las siguientes tareas:
 +
 +Siguiendo el diagrama de clases Java anterior:
 +  * Crea el enumerado ''TipoAsistencia'' y sus valores
 +  * Crea el enumerado ''Sexo'' y sus valores
 +  * Crea la clase ''NIF'' , su propiedad  y los métodos //get/set//
 +  * Crea la clase ''Coberturas'' , sus propiedades y los métodos //get/set//
 +  * Crea la clase ''Enfermedades'' , sus propiedades y los métodos //get/set//
 +  * Modifica la clase ''Seguro'' para incluir las nuevas propiedades y los nuevos métodos //get/set//
 +  * En la clase ''Seguro'' haz que la propiedad ''nif'' sea del tipo ''NIF'' pero que en Hibernate sea un componente en vez de una nueva entidad.
 +  * Haz que las propiedades ''enfermedades'' y ''coberturas'' sean componentes de la clase ''Seguro''.
 +  * Modifica la clase ''AsistenciaMedica'' para incluir las nuevas propiedades y los nuevos métodos //get/set//
 +  * Modifica la configuración de Hibernate de las clases ''Seguro'' y ''AsistenciaMedica'' para indicar a Hibernate que la base de datos genera automáticamente las claves primarias usando un autonumérico.
 +  * Haz que en la propiedad ''fecha'' de la clase ''AsistenciaMedica'' solo se guarde la fecha y **no** la hora.
 +  * Haz que en la propiedad ''hora'' de la clase ''AsistenciaMedica'' solo se guarde la hora y **no** la fecha.
 +  * Haz que en la propiedad ''explicacion'' de la clase ''AsistenciaMedica'' se puedan guardar más de 255 caracteres.
 +  * Haz que en la propiedad ''importe'' de la clase ''AsistenciaMedica'' se guarde como un ''BigDecimal''.
 +  * Al configurar los enumerados ten en cuenta el tipo de datos que se ha definido en la base de datos.
 +
 +Para ello usa las anotaciones de JPA.
 +
 +La clase ''Main'' deberá incluir el siguiente código de creación de los distintos objetos:
 +<code java 1>
 +SimpleDateFormat sdfFecha=new SimpleDateFormat("dd/MM/yyyy");
 +sdfFecha.setLenient(false);
 +SimpleDateFormat sdfHora=new SimpleDateFormat("HH:mm:ss");
 +sdfHora.setLenient(false);
 +Seguro seguro = new Seguro(new Nif("48573562T"), "Sara", "Tomas", "Martínez", 31, Sexo.Mujer, true, 1, true, new Coberturas(true, true, true), new Enfermedades(false, true, false, true, "Acaros"), new Date());
 +AsistenciaMedica asistenciaMedica1 = new AsistenciaMedica(seguro, "Operación de miopía", "Barcelona", "El paciente es operado de miopía en los dos ojos.", TipoAsistencia.Hospitalaria, sdfFecha.parse("18/04/2013"),sdfHora.parse("08:30:00"), new BigDecimal("10400.20"));
 +AsistenciaMedica asistenciaMedica2 = new AsistenciaMedica(seguro, "Analisis de alergia", "Alzira", "Se realizan analisis de sangre para determinar el tipo de alergia que padece el paciente.", TipoAsistencia.Ambulatoria, sdfFecha.parse("12/02/2012"), sdfHora.parse("18:30:00"), new BigDecimal("31.15"));
 +seguro.getAsistenciasMedicas().add(asistenciaMedica1);
 +seguro.getAsistenciasMedicas().add(asistenciaMedica2);
 +</code>
 +
 +Ahora añade a la clase ''Main'' el código de hibernate necesario para que al guardar el objeto ''seguro'' se guarde todo en la base de datos.
ejercicios/unidad04.txt · Última modificación: 2023/04/07 21:26 por 127.0.0.1