| |||
Java :: problema hibernate con lazy Holas , soy nuevo asi que no supe donde postear esto , no encontre algo con hibernate , y en base de datos no querian codigo ,com loesoty haciendo con java ps.. espero resolver esta duda , estoy usando hibernate para hacer una aplicacion junto a java , para la conexion a una BD , el problema es que al moento de llamar a un registro ( como objeto) , viene con todos sus registros relacionados ( lazy:true) , y estos con sus relacionados , entonces se gastan muchos recursos , pero no voy a trabajar con todos esos objetos , solo quiero al que llame , hay alguna forma de resolverlo ? , me dataeron usar patron proxi , en este caso , el proxy estaria de lado del servidor ? , en este caso , si entendi , sino corrijanme porfavor , el cliente haria las consultas al proxy , y el al servicio en mi servidor , pero el problema persiste soloq ue del aldo del servidor .. esa es mi duda |
| ||||
Respuesta: Java :: problema hibernate con lazy Hola: Si usas hibernate no necesitas preocuparte por el patrón proxy, ya viene implementado en hibernate. En los mappings de tus objetos busca las relaciones que tengan y añádele lazy="false" Ejemplo:
Código XML:
De esta forma cuando cargues un objeto Mensaje no va a traer al usuario remitente. Solamente lo va a cargar cuando lo accedas.Ver original saludos; Nup_ |
| |||
Respuesta: Java :: problema hibernate con lazy mmm ya , no entendia bien lo de lazy false , pero ahora si , asi solo traeria a la pimera ilera y no todo el arbol de relacionados , gracias NUp_ .., ahora solo para complementa y hacer mas optima la aplicacion , el atributo fetch , me conviene Selct o Join , entiendo que la diferencia es el numero de consultas , seria mas optimo , varias consultas ( se encolarian ) o una sola ( demoraria por traer mas data ) , o es igual , depende , de que ? |
| ||||
Respuesta: Java :: problema hibernate con lazy Depende de varias cosas: En mi caso uso fetch='join' (implica lazy=false) cuando las entidades q quiero traer de la BD tienen una relación con una única o pocas entidades. Ejemplo: atrticulo-estado_articulo, relaciones 1 a 1, etc. Pero ten en cuenta q si tu entidad tiene varias relaciones y le pones fetch=join a todas, cuando vayas a traer esa entidad se va a ejecutar en la BD un join inmenso cuyo resultado va a traer muchos valores nulos. Para esos casos es mejor fetch=select y traer los resultados en varias consultas. Para los casos q mi entidad pueda estar relacionada con cientos o miles de otras entidades lazy=true con fetch=select me ha servido hasta ahora sin problemas. fetch=select te puede dar problemas si tu aplicación se conecta a un servidor de BD remoto y la latencia de la conexión es muy mala. Pero si tu BD está en la misma PC q tu aplicación o hay una buena conexión: no hay problemas. FE DE ERRATA: en el post anterior te dije q Cita: En realidad es al revés lazy=true es la opción que te da ese comportamiento. No se como editar ese mensaje, de hecho no se si se pueda.
Iniciado por nup_
Código XML:
De esta forma cuando cargues un objeto Mensaje no va a traer al usuario remitente. Solamente lo va a cargar cuando lo accedas.Ver original Espero haberte ayudado. saludos; Nup_ |
Etiquetas: |