Level 2 Flashcards
¿Cuál es la diferencia entre load() y get() ?
Si se está seguro de que el objeto existe, se utiliza load(). En caso contrario, se utiliza alguno de los métodos get().
Si el id único no se encuentra en la DB, el método load() arroja una excepción, mientras que el método get() regresa nulo.
load() regresa un proxy por default y la DB no será tocada hasta que el proxy sea invocado por primera vez. get() consulta la DB inmediatamente.
¿Cuál es la diferencia entre merge y update?
Use update() si está seguro de que la sesión no contiene una instancia persistente con el mismo identificador.
Use merge() si quiere mezclar las modificaciones realizadas hasta el momento sin considerar el status de la sesión.
¿Cómo defines una secuencia para generar una llave primaria en Hibernate?
Usando la etiqueta <generator></generator>
<id><br></br> <generator><br></br> <param></param>SEQUENCE_NAME<br></br> <generator><br></br> </generator></generator></id>
Define las opciones cascada e inversa en un mapeo uno a muchos
Cascada permite que las operaciones afecten las entidades hijas (dependientes).
Puede tomar el valor: all, none, save-update, delete, all-delete-orphan
Inversa - marca la colección como la “inversa” de una relación bidireccional.
Indica qué extremo de la relación debe ignorarse, de forma que al persistir un padre que tiene una colección de hijos, debe preguntar al padre por la lista de hijos o preguntar a los hijos, quién es su padre.
Puede tomar el valor: true o false
¿Qué se entiende por Named SQL Query?
Estos queries son definidos en el mapeo XML e invocados donde quiera que sea necesario.
Ejemplo:
Se define:
<sql-query name=”empdetails” >
<return alias=”emp” class=”com.test.Employee” />
SELECT emp.EMP\_ID AS {emp.empid}, emp.EMP\_ADDRESS AS {emp.address}, emp.EMP\_NAME AS {emp.name} FROM Employee EMP WHERE emp.NAME LIKE :name
</sql-query>
Y se invoca:
List people = session.getNamedQuery(“empdetails”)
.setString(“TomBrady”, name)
.setMaxResults(50)
.list();
¿Cómo se invocan los Stored Procedures?