Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Segundo parcial diseño jueves mañana
Autor Mensaje
Julian.O Sin conexión
Militante
ing :)
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 50
Agradecimientos dados: 91
Agradecimientos: 154 en 35 posts
Registro en: Apr 2016
Mensaje: #1
Segundo parcial diseño jueves mañana Parciales Diseño de Sistemas
Hola les dejo el segundo parcial del 2019 de la cátedra nueva, las correcciones están en lápiz así que no se ven bien.

Éxitos!!


Archivo(s) adjuntos
.pdf  DDS.pdf (Tamaño: 1,21 MB / Descargas: 381)
(Este mensaje fue modificado por última vez en: 08-12-2019 17:51 por Julian.O.)
27-11-2019 20:31
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Julian.O recibio 2 Gracias por este post
heinn (05-02-2020), guidoenr (25-11-2020)
guidoenr Sin conexión
Campeon del cubo Rubik
super ingeniero internacional
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 116
Agradecimientos dados: 54
Agradecimientos: 103 en 30 posts
Registro en: Jan 2017
Mensaje: #2
RE: Segundo parcial diseño jueves mañana
gracias por el aporte Julian, siento que merecías mas nota que un 7.. cuando estaba haciendo la resolución de tu parcial hice cosas casi identicas que vos, lo que si, terribles chupapijas cuando te marcaron en rojo lo de ´TABLE_PER_CLASS´

siento que te cagaron ahí.. porque es cualquiera, el punto 1 dice explicitamente que un cliente cuando solicita un servicio, solicita por el tipo lo que hace de cajon que la estrategia del mapeo de herencia sea una TABLE_PER_CLASS, no puedo creer que se te quejaron porque en el punto 2 hacen un query solicitando el servicio polimorficamente, no tiene nada que ver con el punto 1 .. aparte vos le justificaste que funcionaba mal por eso y que se podía cambiar por JOINED.

era para irse a las piñas amigo, pero bueno.. felicitaciones de todas formas

pd: dejo la parte mas importante tal vez para que sea vea mejor, que es todo lo que es persistir las clases y etc.. (es pseudocodigo)



elementos del modelo a persistir:/*
la class SeleccionadorDeProfesionales no la persisto puesto que se seleccionan profesionales en el
momento en base a criterios, y no tiene sentido persistirlos en la base de datos.. el resto, todas
se persisten.
*/

cambios al modelo de objetos:/*
ninguno
*/

estrategia de mapeo de herencia:/*
opto por utilizar TABLE_PER_CLASS, puesto que el enunciado dice "un cliente solicita un servicio,
especifcando su tipo[..]" lo cual da a entender, que nunca se va a solicitar un servicio polimorficamente
entonces, gano mucha performance en las consultas no-polimorficas.. lo cual parece ser un factor dominante
a la hora de elegir un mapeo de herencias conveniente, eso si.. en caso de haber consultas polimorficas
perderia en temas de velocidad.
*/




@MappedSuperclass
class PersistentEntity{
@Id @GeneratedValue
private Long id
}

@Entity
@Table(name = "servicio")
@Inheritance(strategy = TABLE_PER_CLASS)
abstact class Servicio{

@Id
@GeneratedValue(strategy= GenerationType.TABLE)
@GenericGenerator(name = "uuid2", strategy = "uuid2")
private long ID;

@Embedded // gano performance embediendo esta clase al servicio, puesto que es un atributo
@OneToOne // que siempre esta presente, ademas, me ahorro un query extra
Ubicacion ubicacion;

@OneToMany
Set<Presupuesto> presupuestos;

@Column(ColumnDefinition = "DATETIME")
Date fechaDeRealizacion;

@Column(ColumnDefinition = "VARCHAR(30)")
String descripcion;

@Enumerated("string") // se mapea como string porque me interesa el contenido y no el numero
Tipo tipo;
}

class ServicioHogareño extends Servicio{

@Column(ColumnDefinition = "VARCHAR(30)")
String dni

@Column(ColumnDefinition = "VARCHAR(30)")
String nombreSolicitante
}


class ServicioEmpresarial extends Servicio{

@Column(ColumnDefinition = "VARCHAR(30)")
String CUIT;

@Column(ColumnDefinition = "VARCHAR(30)")
String razonSocial;
}



class Presupuesto extends PersistentEntity{

@ManyToOne
Profesional profesional;

@Column(ColumnDefinition = "BIGDECIMAL")
Float monto;

@Column(ColumnDefinition = "BIGDECIMAL")
Float tiempoEnHoras;

@Column(ColumnDefinition = "BOOLEAN")
Boolean estaAprobado;
}


class Profesional extends PersistentEntity{

@Embedded //embebo la ubicacion para el Profesional puesto que el mismo tambien
Ubicacion ubicacionActual; // siempre tiene presente una ubicacion, ganamos performance.. 1 query extra menos.

@ManyToMany
Set<PoliticaDeCuota> politicasDeCuota;

@ManyToMany
Set<Certificacion> certificaciones;

@Column(ColumnDefinition = "VARCHAR(30)")
String nombre;

@Column(ColumnDefinition = "VARCHAR(30)")
String apellido;
}

class Certificacion extends PersistentEntity{

@Enumerated
Tipo tipo;

@Column(ColumnDefinition = "DATETIME")
Date fecha;

@Column(ColumnDefinition = "BIGDECIMAL")
Float puntajeObtenido;

@Column(ColumnDefinition = "VARCHAR(30)")
String descripcion;
}

class Ubicacion{ // no hace falta IDS ni nada por el estilo, porque esta embebida
@Column(ColumnDefinition = "BIGDECIMAL")
Float latitud;

@Column(ColumnDefinition = "BIGDECIMAL")
Float longitud;

}

Enum Tipo{
ELECTRICIDAD, PLOMERIA, PISOS,..
}

[/code]
(Este mensaje fue modificado por última vez en: 18-11-2021 14:56 por guidoenr.)
25-11-2020 16:58
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] guidoenr recibio 1 Gracias por este post
Julian.O (25-11-2020)
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: