Hibernar conocimientos relacionados con consultas Hora: 2009-10-04 07:14:25 Fuente: Internet Autor: Desconocido Clics: 146 veces Primero introduzca la diferencia entre los métodos get() y load():
La diferencia entre el método get() y el método load() radica principalmente en el uso de caché de segundo nivel.
El método load () utilizará el caché de segundo nivel, y el método get () consultará directamente la base de datos si no se encuentra en el caché de primer nivel y no buscará en el caché de segundo nivel.
get(): si primero introduce la diferencia entre los métodos get() y load() en la base de datos:
La diferencia entre el método get() y el método load() radica principalmente en el uso de caché de segundo nivel.
El método load () utilizará el caché de segundo nivel, y el método get () consultará directamente la base de datos si no se encuentra en el caché de primer nivel y no buscará en el caché de segundo nivel.
get(): Si no hay ningún registro en la base de datos, devolverá nulo. get() devolverá datos de todos modos.
load(): si no hay ningún registro en la base de datos, se generará una excepción. Si hay datos, se devolverá un objeto proxy.
Diferencia entre los métodos lista e iterador(): (¿N+1?)
Cuando se ejecuta el método list(), ejecuta directamente las declaraciones de consulta necesarias para los resultados de la consulta.
El método iterador () primero ejecuta la consulta para obtener el ID del objeto y luego obtiene el objeto a consultar en función de cada valor de ID.
Por lo tanto: para consultas que utilizan el método list(), normalmente solo se ejecuta una instrucción SQL, mientras que para consultas que utilizan el método iterator(), es posible que sea necesario ejecutar N+1 instrucciones SQL (N es el número de registros en el conjunto de resultados ).
Los conjuntos de resultados se procesan de forma diferente:
El método list() activará todos los objetos del conjunto de resultados a la vez e inicializará todos los objetos del conjunto de resultados en función de los resultados de la consulta. Si el conjunto de resultados es muy grande, ocupará mucha memoria e incluso provocará un desbordamiento de la memoria.
El método iterator() no inicializa todos los objetos a la vez durante la ejecución, sino que inicializa los objetos según el acceso al conjunto de resultados. Puede controlar la cantidad de objetos en el caché durante un acceso para evitar ocupar demasiado caché y provocar un desbordamiento de memoria.
HQL: HQL es un lenguaje de consulta orientado a objetos. Los objetos operativos de HQL son clases, instancias, atributos, etc.
SQL: los objetos de operación de SQL son objetos de datos, como tablas y columnas de datos.
Hql es un lenguaje de consulta completamente orientado a objetos, por lo que puede admitir funciones como herencia y elementos múltiples.
La consulta HQL se basa en la clase Query y cada instancia de Query corresponde a un objeto de consulta.
La función de configurar parámetros, la interfaz de consulta es la interfaz de consulta HQL real.
//Crear un objeto de consulta
Consulta consulta = session.createQuery ("desde el Cliente como c donde c.name=:customerName y c.age=:customerAge");
//Parámetros de enlace dinámico
query.setString("nombredelcliente","Tom");
query.setInteger("edaddelcliente",21);
//Ejecutar la declaración de consulta y devolver los resultados
Resultado de la lista = query.list();
Pasos de consulta HQL:
1: Obtenga el objeto de sesión de Hibernación.
2: Escriba declaraciones HQL.
3: Utilice la declaración HQL como parámetro para llamar al método createQuery de Session para crear un objeto de consulta.
4: Si la declaración HQL contiene parámetros, llame al método setXXX () de Consulta para asignar valores a los parámetros.
5: Llame a la lista y otros métodos del objeto Consulta para recorrer los resultados de la consulta.
La consulta también contiene dos métodos:
setFirstResult (int firstResult): establece el registro a partir del cual comienza el conjunto de resultados devuelto.
setMaxResults(int maxResults): establece el número de resultados devueltos por esta consulta.
Eliminación y actualización de entidades.
Consulta de proyección: consulta solo parte del atributo.
Consultar un atributo devuelve una cadena
Consultar dos campos devuelve una matriz
Consulta construida dinámicamente: se utiliza principalmente para docenas de consultas de tablas;
Para construir un nuevo objeto, agregue un constructor;
Al crear un nuevo objeto, agregue el nombre del paquete
No use count(*), use count(objeto persistente)
Agrupar y ordenar:
La cláusula Order by se puede ordenar mediante palabras clave asc o desc
Por ejemplo: formulario Usuario u Ordenar por u.nombre asc,u.edad desc;
Agrupar por cláusula y consulta estadística:
Por ejemplo: String hql = "seleccione recuento(u),u.age del grupo Usuario u por u.age teniendo recuento(u)>10";
Lista lista = session.createQuery(hql).list();
Las funciones agregadas de SQL estándar se pueden utilizar en declaraciones HQL, como: count(), sum(), max(), min(), age(), etc.
Consulta de conexión:
Unión interna: unión interna
Unión exterior izquierda: unión exterior izquierda
Unión exterior derecha: unión exterior derecha
Unión completa: unión completa (no se usa comúnmente)
Unión externa urgente: búsqueda de unión externa izquierda, unión izquierda
buscar: se utiliza para obtener datos de conexión al mismo tiempo, especialmente datos de recopilación. Reducir el número de interacciones con la base de datos.
Unión omitida: utilice una unión externa para realizar una unión externa. Se mostrarán todos los registros de la tabla de la izquierda y la información de registro correspondiente de la clase de orden.
unión de salida derecha: justo lo contrario de la unión de salida izquierda, la unión de salida derecha devuelve todos los registros en la tabla derecha de HQL y la información de registro del objeto Cliente correspondiente.
Cuatro formas de obtener datos de recopilación:
1:Hibernate.initialize(usuario.getOrder());
2:usuario.getOrder().size();
3: Conexión urgente izquierda y derecha
4: filtros avanzados
Consultas de criterios: utilice objetos para realizar consultas de objetos.
Las interfaces principales son: clases Criteria, Criterion, expresión_r y Restricciones. Capacidad para admitir la generación dinámica de declaraciones SQL en tiempo de ejecución.
Pasos de consulta condicional:
1: Cree un objeto Criteria mediante el método CreateCriteria() de seesion
2: Establezca el objeto de consulta, el nombre se refiere al atributo del objeto
3: Agregar condiciones de consulta al objeto Criterios
4: Ejecute la consulta list() para devolver los resultados.
La consulta condicional se completa a través de tres clases:
Criterios: representa una consulta.
Criterio: representa una condición de consulta.
Restricciones: Clase de herramienta para generar condiciones de consulta.
Este artículo proviene del blog de CSDN. Indique la fuente al reimprimir: http://blog.csdn.net/jzaccp_xiaoxiong/archive/2009/12/31/5111135.aspx .