spring + hibernate 延迟加载问题... 本帖最后由 gbx007 于 2009-08-26 09:54:02 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref local="sessionFactory"/> </property> </bean> <!-- 配置事务的传播特性 --> <tx:advice id="txAdvice" transaction-manager="transactionManager" > <tx:attributes> <tx:method name="add*" propagation="REQUIRED"/> <tx:method name="del*" propagation="REQUIRED"/> <tx:method name="update*" propagation="REQUIRED"/> <tx:method name="deploy*" propagation="REQUIRED"/> <tx:method name="*" read-only="true"/> </tx:attributes> </tx:advice> <!-- 配置哪些类哪些方法使用事务 --> <aop:config> <aop:pointcut id="allManagerMethod" expression="execution(* com.zzq.oa.manager.*.*(..))"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod"/> </aop:config> 回复2楼的, SPRING的 事务管理我会, 我是想知道 为什么用了事务管理, pic.getUser() 就可以 正常运行了 。 HibernateTransactionManager 里的init-lazy 默认是什么? 回复badboy169168 lazy-init="default" 就是 不采用延迟加载咯? 但我感觉这个和hibernate延迟加载没什么关系, 这个应该是 启动时 spring 是否 进行加载吧 , 因为 我从 tomcat 启动的时间 来判断的? 那位说下 HibernateTransactionManager lazy-init 的作用吧? 还有autowire的作用 在web.xml配置文件中加一OpenSessionInViewFilter <filter> <display-name>OpenSessionInViewFilter</display-name> <filter-name>OpenSessionInViewFilter</filter-name> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> </filter> <filter-mapping> <filter-name>OpenSessionInViewFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 这个是可以解决 SESSION关闭的问题, 但我想知道 为什么用了事务管理 也可以解决SESSION关闭的问题? lazy-init 是spring的beanfactory启动的时候就加载hibernateTransactionFactory,与hibernate对pojo的延迟加载没关系。autowire是bean的装配策略,意思是你可以改变装配策略而不需要在bean中写ref="某个bean id",策略可以分为按照bean类型、bean名称、构造器参数和不确定性装配(autodetect,先自动按照构造器参数,然后用byType).事务管理相对于一个类或者业务方法,在执行之前,spring会确保被声明的类或者方法出于同一个事务中,而事务是与session联系的,因为要确保事务开启就必须先开启session,事务完了spring会帮你关闭session,基本上就是代理和拦截器做的工作. 本人对配置OpenSessionInViewFilter的作用也不是很明白,指点一下,谢谢大虾了。。 很不错的Java 视频资料 如何把查询到的数据放到JSP页面 myeclipse+spring+hibernate的菜鸟问题(有关Spring事务与数据库操作),请高手指点 请大侠出手介绍一下JMX和MBeans!谢谢! 关于struts2查询数据库的问题 dom解析xml成功实例 JAVA 如何获取硬盘的ID 当带有多个查询条件的时候,在Struts里怎么实现分页? 关于用struts自带的包实现文件上传的乱码问题,急!! 求救, struts 在 Win Me 下不能正常显示页面 网页 网站制作问题 Hibernate延迟加载的问题
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<!-- 配置事务的传播特性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager" >
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="del*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="deploy*" propagation="REQUIRED"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>
<!-- 配置哪些类哪些方法使用事务 -->
<aop:config>
<aop:pointcut id="allManagerMethod" expression="execution(* com.zzq.oa.manager.*.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod"/>
</aop:config>
但我感觉这个和hibernate延迟加载没什么关系, 这个应该是 启动时 spring 是否 进行加载吧 , 因为 我从 tomcat 启动的时间 来判断的? 那位说下 HibernateTransactionManager lazy-init 的作用吧? 还有autowire的作用
<display-name>OpenSessionInViewFilter</display-name>
<filter-name>OpenSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>OpenSessionInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>