Ver Mensaje Individual
  #3 (permalink)  
Antiguo 06/01/2016, 14:40
X_fran
 
Fecha de Ingreso: octubre-2007
Mensajes: 273
Antigüedad: 16 años, 7 meses
Puntos: 5
Respuesta: Deshabilitar el Pooling me resolvería ??

Estoy seguro que esa parte que explicas, el framework la implementa, pero habrá algún bug que hace que la carga de las entidades asociadas se realice bajo otra conexión que no es posible cerrar.

Rectificando un poco la duda planteada, no importa si es por Lazy Load o no, ciertas entidades asociadas su carga se realiza bajo una nueva conexión.

Digamos que tenemos este modelo:

Código Java:
Ver original
  1. clase Factura
  2. Int id;
  3. Datetime fechaRecibida
  4. String anotación;
  5. Entities.LineaFactura  lineaFacturaAsoc; // digamos que no marque con Lazy Load esta.
  6.  
  7. clase LineaFactura
  8. Int     id;
  9.     String descripcion;
  10.     Entities.Empresa empresa; // Digamos que no marque con Lazy Load esta.
  11.     Entities.FacturaList facturas = new Entities.FacturaList();
  12.  
  13. clase Empresa
  14.     String codigo;
  15.     String nombre;
  16.     String dirección;
  17.     String teléfono;


Para este modelo digamos que quiero obtener un listado de facturas
Haciendo uso del framework (Cooperator) sería así:

Código Java:
Ver original
  1. public Entities.FacturaList FacturasRecibidas()
  2. {
  3.     try{
  4.         return Mappers.FacturaMapper.Instance().GetAll();
  5.     }catch(...)
  6.     {
  7.         ...
  8.     }
  9. }

cuando se hace la carga de la entidad LineaFactura de Cada Factura obtenida por supuesto se obtienen las Empresas (no estan marcadas con Lazy Load).
Para este caso, se abre una nueva conexion para la carga de la entidad Empresa relacionada a cada LineaFactura.

Que no se carguen por Lazy Load las entidades asociados lo hice para que comprendieran la situacion que afronto, aunque hay situaciones en las que sí tengo que dejar ciertas asociaciones o composiciones sin el Lazy Load.

en algunos casos, he tenido que dejar de hacer uso de las clases Mapper y llenar las listas mediante DataReader encerrados en directivas using, y claro que no hay problemas, pero es un proceso tedioso por lo que me decanté por deshabilitar el pooling.

Última edición por X_fran; 06/01/2016 a las 14:42 Razón: Formatear el pseudo codigo.