miércoles, 17 de noviembre de 2010

HIBERNATE OPEN SESSION

Es necesario tener abierta la sesion: Hibernate trabaja perezoso -->

LAZY LOADING: o carga perezosa es un mecanismo que hibernate implementa para tratar algunas relaciones. Una entidad (POJO que se persiste en una tabla de la BD) puede tener múltiples relaciones con otras entidades.

A veces cuando nos traemos datos de la BD no nos interesa cargar toda la información relacionada ya que sólo vamos a usar o mostrar una parte.


Para toda transaccion con hibernate (@Transactional) en spring, necesitamos en applicationContext.xml (precedente a <bean id="transactionManager".....)


<mvc:interceptors>
<bean class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
<property name="sessionFactory" ref="mySessionFactory"/>
</bean>
</mvc:interceptors>


A su vez necesitamos el filter de web.xml pero este no debemos introducirlo "a mano":

<filter>
<filter-name>hibernate</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>sessionFactoryBeanName</param-name>
<param-value>mySessionFactory</param-value>
</init-param>
<init-param>
<param-name>singleSession</param-name>
<param-value>true</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>hibernate</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

No hay comentarios:

Publicar un comentario