Spring con JPA y hibernate Flashcards
Por que usar spring y hibertnate
Por que tenemos todos los beneficios de spring, como facil de probar, inyeccion de dependencias, las transacciones son mas faciles de utilizar
Que necesitamos para usar spring
un persistence.xml(META-INF) vacio y un jpaContext.xml que va a ser el que sustituir al persistence
Que se tiene que configurar para que pueda utilizar spring y no persistence.xml
se pone un listener en el web.xml
Por que es bueno usar JPA en lugar de hibernate o cualquier otra implementacion
Por que si queremos cambiar de proveedor podemos hacerlo sin ningun problema, sin en cambio usamos hibernate y cambiaos, tendriamos que cambiar todas las referencias a hibernate
Que es lo minimo requerido para una crear una entidad jpa
Se necesita un @Id y la anotacion @Entity
Que es el dialecto
Es el lenguaje especifico sql que vamos a estar trasladando desde JPA
Cuales son los posibles valores de h2ddlauto
- create
- create-drop (elimina todo lo que tenga un objeto referenciado)
- update
- validate(Valida que no falte nada, se puede usar en produccion)
- none
Cuales son los parametros que se pueden pasar a @GeneratedValue
auto, sequence y identity
Para que sirve @PersistenceContext
Representa a un persistence unit, el persistence unit representa una conexion a una base de datos especifica con su dialecto especifico, inyecta el entity manager a nuestro codigo para que podamos interactura con la base de datos
Para que sirve @Transactional
Se pone en la capa servicio y es para manejo de transacciones con spring
Cual es la diferencia entre persist() y merge()
persist no regresa nada(void) y necesitamos hacer flush() para que se guarde en base de datos, merge es para actualizar y regresa un objeto del tipo que le estemos pasando y no necesita flush()
Como se utiliza @OneToMany y @ManyToOne
Del lado de OneToMany debemos especificar el objeto unitario por medio de mappedBy y del lado de la lista solo anotamos con ManyToOne y ese objeto debe llamarse igual que lo que pusimos en mappedBy
Cuantos tipos de fetch hay
Lazy y eager
Cual es el problema con lazy loading
Si estamos pretendiendo cargar algo que es lazy y no tenemos un evento que dispare la carga lazy, por ejemplo un boton o un link, nos mandara un error ya que el contexto no logra resolver esto en el tiempo que la pagina lo pide, generalemnte el contexto jpa se quede hasta el servicio, pero nosotros necesitamos extenderlo hasta que muestre la pagina, esto se hace poniendo en el jpaContext un filtro llamado OpenEntityManagerInViewFilter
Que son las proyecciones
Son similares a las vistas, tenermos que crear clases que representen estas vistas y en sus contructor le pasamos los valores que necesitamos nos regrese el query, por ejemplo Select new com.pluralsight.GoalReport(g.id, g.minutos, g.actividad) from Goal g