BBDD2 - Respuestas A Preguntas Finales
BBDD2 - Respuestas A Preguntas Finales
1. Definir persistencia por alcance. ¿Hay alguna condición que se debe dar para que
exista la persistencia por alcance?
RTA: Toda instancia a la cual se pueda llegar por una instancia persistente, es a su vez
persistente. Esto indica que para persistir objetos, basta con vincularlos con otro objeto
persistente.
Teoría 1 el profe dijo: Recuperar un objeto persistente, se vincula con algo nuevo y ese
nuevo se va a guardar automáticamente
En la clase de JPA dijo que las operaciones en cascada está relacionado a cómo quiero
manejar la persistencia por alcance. Generalmente se usa ALL.
5. De todas las operaciones CRUD, ¿Cuál es la que se debería poner foco? ¿Por qué?
RTA: La operación que siempre necesito usar y debe estar optimizada es la recuperación
“R”. Porque para crear un objeto probablemente necesite recuperar otro para vincularlo,
para actualizar necesito recuperar la instancia y para eliminar necesito recuperar la
instancia y los colaboradores.
6. Explicar las estrategias de resolución de jerarquías. Explicar cuál sería las más
performante.
RTA:
[1] Si tuviera una clase vehículo, necesito identificar de alguna manera qué tipo de vehículo
es, si es camión, auto, etc. Quizás existan columnas que un camión no use porque son
propias de un camión.
Quiero buscar camiones, voy a tener que recorrer todos los autos.
7. ¿Se pueden aplicar dos estrategias de resolución de jerarquías a un mismo caso al
mismo tiempo? Explicar
RTA: Si. Un tipo de estrategia es posible que no me alcance para guardar la información y
cumplir con todas las user story que tengo.
Puedo haber elegido distintas estrategias.
Desventaja: guardo mucho pero hoy en día el almacenamiento no importa tanto.
Puedo tener triggers para insertar en varias tablas.
Spring Data es uno de los frameworks que se encuentra dentro de la plataforma de Spring.
Su objetivo es simplificar al desarrollador la persistencia de datos contra distintos
repositorios de información .
Es uno de los módulos más grandes de Spring.
El principal objetivo de Spring Data es proveer una serie de herramientas que nos permiten
realizar integraciones sencillas con los diferentes entornos de información de datos que
tenemos.
Podemos extender de una clase de Spring Data, por ejemplo, para trabajar con repositorios
<Persona, Long>
Hace referencia a la clase Persona, y el segundo parámetro es el tipo de dato de la clave
primaria de la clase Persona
Spring Data construye consultas dinámicas, únicamente usando un nombramiento de los
métodos. Por ejemplo, si digo findByNombre(String nombre), el findeBy, es una instrucción
propia de spring data, y lo que sigue hace referencia a la propiedad por la cual voy a
construir la consulta dinámica, se buscan todas las personas que coincidan con el
parámetro nombre.
10. ¿Qué formas hay de declarar una query a la base utilizando Spring Data? Explicar
cada una de ellas.
RTA:
1. usar find() que vienen en la clase abstracta.
2. Los que yo defina como parte de la interfaz.
3. Configurando la consulta que se desea ejecutar Query(“”). Si cambio de base tengo que
cambiar acá.
4. Implementando de forma manual la consulta y haciendo que spring adopte nuestra
implementación.
2-. Para qué sirven los archivos .class aumentados (JDO). Describir el proceso de
aumento.
RTA:
El código Java se compila con javac y obtenemos el .class que es el bytecode de la clase
Java
Podemos tener metadata en un archivo separado .jdo o en forma de annotations
Aplicamos el enhancer, que se encarga de aumentar el código compilado con la metadata
que saca del archivo jdo o las annotations, y eso da como resultado una versión más
grande del código compilado. La ventaja de esto es que se hace en tiempo de compilación,
se analiza y ya se crean todas las clases que se necesitan, está todo compilado y armado
3. Defina Persistencia por alcance.
RTA: más arriba
26/2/2021
1. Cual es el número de veces que se podría ejecutar la sentencia save en hibernate
para persistir un objeto.
RTA: Me bastaría con uno, para que todo mi modelo persista.
Patrón root object, se tiene que modelar el sistema como un objeto en sí mismo, si se
modela un banco debería aparecer la clase banco, con lo cual si hacemos un save de
Banco el resto se va a guardar en cascada
Si estamos usando una bd relacional puede pasar que podemos tener una app que no tiene
sentencia de guardado y aún así está guardando la información, porque podemos ejecutar
un script que lo primero que hace cuando estoy configurando el sistema la primera vez,
inserta en las tablas la información necesaria, por ejemplo, la que representa al banco,
entonces ya mi app sabe que el banco está creado con lo cual lo único que va a hacer es
recuperar y vincular los objetos y esos objetos se van a guardar automáticamente.
2. Definir persistencia por alcance. Hibernate la implementa por defecto o hay que
configurarla? ¿Cómo se llama el atributo xml que la configura?
RTA: Hibernate tiene persistencia por alcance pero no lo menciona abiertamente ¿por qué?
porque básicamente le conviene que escribamos .save .loquesea, porque esto complejiza
migrar de Hibernate a otra cosa.
4. Cuál crees que es la mejor estrategia para tratar las jerarquías en hibernate. (Libre
opinión, justificando la decisión). Se podría en hibernate plantear un esquema mixto?
¿Cómo funciona?
HQL, lenguaje de consulta de hibernate, se monta y se traduce sobre SQL, siguen siendo
strings para java
Hibernate - Criteria Queries, se modela con objetos una consulta, se valida y se sabe de
antemano que va a funcionar, no falle porque por ejemplo que no exista la clase
Criteria se traduce a HQL y luego a SQL, es más lento
RTA: En primer lugar al ejecutar un update sobre documentos, en caso de no existir algún
atributo, se creó y a los que existían les actualiza el valor.
En segundo lugar, en caso de producirse un fallo hay que revisar la ejecución ya que no se
cumple ACID. Si actualizo 5 registros y fallo, bueno, quedaron 5 actualizados y los otros no.
Cada ejecución devuelve un json con estadísticas.