spring对hibernate多数据源均实现延时加载
???? 最近在优化公司的系统的时候mysql数据库采用了读写分离策略,同样的sessionFactory要配置两个,但原有的项目中大量应用了hibernate的延时加载,在调试的时候才发现,无论如何都不能同时实现两个sessionFactory的延时加载,后来通过翻阅资料和阅读源码,终于找到了解决方案:
两个sessionFactory的在spirng配置如下:
<beanid="sessionFactoryAssist"/></property><property name="lobHandler"><ref bean="oracleLobHandler" /></property></bean><beanid="sessionFactory"/></property><property name="lobHandler"><ref bean="oracleLobHandler" /></property></bean>
?
在web.xml中配置两个hibernate filter,分别管理这两个sessionFactory,来实现延时加载:
?
<filter><filter-name>hibernateFilter</filter-name><filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> <init-param> <param-name>sessionFactoryBeanName</param-name> <param-value>sessionFactory</param-value> </init-param> <init-param> <param-name>singleSession</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>flushMode</param-name> <param-value>AUTO</param-value> </init-param> </filter><filter><filter-name>hibernateFilterAssist</filter-name><filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> <init-param> <param-name>sessionFactoryBeanName</param-name> <param-value>sessionFactoryAssist</param-value> </init-param> <init-param> <param-name>singleSession</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>flushMode</param-name> <param-value>AUTO</param-value> </init-param> </filter>
?
?至此,两个sessionFactory均可以实现延时加载了。
?