读书人

Hibernate 延迟加载跟openSessionInVi

发布时间: 2012-12-26 14:39:29 作者: rapoo

Hibernate 延迟加载和openSessionInView及HibernateInterceptor
在SSH框架组合作开发时,往往都会遇到需要延迟加载的情况。如多对多的表结构关系中,或者一对多的关系。如User和Role表通过User_role表进行多对多关联。这样,在实际项目需求上,可能会有:对用户权限管理,通过Role表得到所有可用权限,在利用user_role表得知该权限下有什么用户。
实现方法多种,其他的我并不了解,这几天因为遇到了相关问题,总结了三种方法:
第一:在hibernate的配置文件中设置“lazy=‘true’”,但我在项目中,使用的是在应用上下文进行sessionFactory配置,使用类“org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean”,通过propery name=“annotatedClasses”把所有POJO加进来。没有使用Hibernate的xml配置文件方式进行映射关联。
第二:使用Spring框架给我们提供的OpenSessionInViewFilter或者OpenSessionInViewInterceptor。但是我在项目中,在web.xml配置该filter时,通过“*.action”匹配,没有起作用,我暂时不知道原因所在,必须通过“/*”匹配,这样对系统性能会造成相当大的影响。然而OpenSessionInViewInterceptor。看了javadocs,得知其配置大致如下:

<bean name="openSessionInViewInterceptor" name="code"><bean id="hibernateInterceptor" name="code"><bean id="userRoleBean" ref="dataProvider"></property></bean>


那么在com.edward.action.UserRoleAction中只需直接调用dataProvider提供的方法即可满足需求!

读书人网 >编程

热点推荐