`
zyn010101
  • 浏览: 325100 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring对hibernate多数据源均实现延时加载

阅读更多

     最近在优化公司的系统的时候mysql数据库采用了读写分离策略,同样的sessionFactory要配置两个,但原有的项目中大量应用了hibernate的延时加载,在调试的时候才发现,无论如何都不能同时实现两个sessionFactory的延时加载,后来通过翻阅资料和阅读源码,终于找到了解决方案:

两个sessionFactory的在spirng配置如下:

 <bean
		id="sessionFactoryAssist"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="configurationClass">
			<value>com.landray.kmss.sys.config.loader.HibernateConfiguration</value>
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					${hibernate.dialect}
				</prop>
			</props>
		</property>
		<property name="dataSource">
			<ref bean="dataSourceAssist" />
		</property>
		<property name="lobHandler">
			<ref bean="oracleLobHandler" />
		</property>
	</bean>
	<bean
		id="sessionFactory"
		class="com.landray.kmss.sys.config.loader.KmssHibernateLocalSessionFactoryBean">
		<property name="configurationClass">
			<value>com.landray.kmss.sys.config.loader.HibernateConfiguration</value>
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					${hibernate.dialect}
				</prop>
			</props>
		</property>
		<property name="dataSource">
			<ref bean="dataSource" />
		</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均可以实现延时加载了。

 

1
0
分享到:
评论

相关推荐

    Spring获取数据源代码

    综上所述,Spring获取和使用数据源是通过配置不同的数据源类型、连接池,以及在需要的地方注入数据源来实现的。在实际开发中,还需要根据项目需求选择合适的数据源,并考虑性能、稳定性和资源管理等因素。对于初学者...

    ssh集成jar包,支持spring集成Hibernate,spring集成struts2等

    - Hibernate支持延迟加载(Lazy Loading),提高性能,只在需要时加载数据。 - 使用SessionFactory和Session接口进行数据库会话管理,支持HQL(Hibernate Query Language)和SQL进行查询。 3. **Struts2框架**: ...

    Spring2.5+Hibernate3.2开发手册

    5. **多数据源支持**:允许在一个应用中连接并操作多个数据库,提高了灵活性。 结合这两个框架,开发者可以构建出高效、松散耦合的Java应用。Spring 2.5 提供了对Hibernate的集成支持,可以方便地通过Spring的事务...

    Struts+spring+hibernate面试资料

    Hibernate通过以下方式实现延迟加载: - **使用懒加载代理**:对于一对多或多对多的关系,Hibernate会在需要的时候动态创建代理对象。 - **OpenSessionInView模式**:这是一种解决懒加载异常的有效方案,通过确保...

    Struts,Spring与hibernate集成

    5. **配置dataSource和SessionFactory**:在Spring配置文件中,你需要配置数据源(dataSource)和SessionFactory,这样可以将Hibernate的配置整合到Spring中,同时可以移除hibernate.cfg.xml文件,让Spring管理...

    Spring整合Hibernate示例完整代码

    10. **性能优化**:整合Spring和Hibernate后,我们可以通过配置和最佳实践优化性能,如批量操作、延迟加载、缓存策略等。 总的来说,Spring整合Hibernate能带来更优雅的代码结构、强大的事务管理和灵活的数据库操作...

    Spring3, JPA2( Hibernate4)整合开发DWP

    JPA2带来了许多改进,如支持双向一对多关联、延迟加载优化、查询注解增强等。而Hibernate4是JPA的一个流行实现,它提供了更丰富的功能,如第二级缓存、事务管理和事件监听器。 在Eclipse中创建Dynamic Web Project...

    struts+spring+hibernate笔试面试常见问题

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲地使用面向对象的编程思想来操纵数据库。 **1.2 Hibernate 工作原理** - **读取并解析配置...

    spring3+springmvc+jpa+hibernate

    2. 数据源配置:项目中应包含数据源的配置,用于连接数据库,可能在`persistence.xml`或Spring配置文件中。 3. 实体类(Entities):这些是与数据库表映射的Java类,使用JPA注解进行配置。 4. Repository接口:基于...

    Spring MVC + hibernate 集合

    1. **配置 Spring 和 Hibernate**: 在 Spring 配置文件中引入 Hibernate 相关配置,如数据源、SessionFactory 等。 2. **事务管理**: 使用 Spring 的 PlatformTransactionManager 实现事务的统一管理,确保操作的...

    hibernate和spring技术难点及其要点总结

    它们提供了事务管理和数据源的便捷接入。 **三、Hibernate的查询方式** 1. **HQL(Hibernate Query Language)**:类似于SQL,但面向对象,支持条件查询、分页、连接查询和嵌套查询。 2. **QBC(Query By Criteria...

    struts2.3.2+spring4.1.6+hibernate4.2

    4.2版本引入了对JPA 2.1的支持,优化了性能,增强了对延迟加载(Lazy Loading)和缓存策略的处理。通过Hibernate,开发者可以将数据库操作封装到实体类中,降低了数据层和业务层的耦合。 SSH整合的主要目标是利用...

    Spring + Hibernate + Struts

    4. **配置Spring**:编写`applicationContext.xml`,配置数据源、事务管理器、DAO和Service Bean。 5. **实现DAO和Service**:编写数据访问对象(DAO)接口及其实现,以及业务逻辑层(Service)类。 6. **整合Struts...

    spring+hibernate

    2. **延迟加载(Lazy Loading)**:Hibernate 支持实体属性的懒加载,只有在真正需要数据时才会执行 SQL 查询,提高了性能。 3. **缓存机制**:Hibernate 内置了二级缓存,可以显著提高数据读取速度。 4. **查询语言...

    精通Hibernate+源代码

    此外,书中还会涉及Hibernate的性能优化技巧,如延迟加载、批处理和连接池配置,这些都是实际项目中必不可少的知识。同时,作者可能还会讨论Hibernate与其他技术的集成,如Spring框架的整合,以及如何在分布式环境下...

    Spring2.5.3+Hibernate3.2+Struts2.0.11整合.

    2. 集成Hibernate:配置Hibernate的主配置文件(hibernate.cfg.xml),定义数据源,实体类的映射文件(.hbm.xml或使用注解),并利用Spring管理SessionFactory。 3. 配置Struts2:编写struts.xml配置文件,定义...

    Struts+hibernate+Spring的整合

    5. **数据源配置**:在Spring配置文件中定义数据源(dataSource)和SessionFactory,这是连接数据库的关键。通过这种方式,可以将Hibernate的配置统一管理,避免在各个DAO中重复配置。 6. **HibernateDAOSupport类*...

    Java_Spring Boot 3 Spring 6和Hibernate for Beginners课程的源代码.zip

    通过本课程的源代码,你可以逐步了解如何配置Spring Boot项目,集成Spring 6框架,以及如何使用Hibernate进行数据访问。这将帮助你构建完整的端到端应用,包括RESTful API、数据库交互和错误处理。同时,你将掌握...

    struts2 hibernate spring博文汇集

    - **延迟加载**:介绍Hibernate如何实现延迟加载来优化查询效率。 ### Database & JDBC #### 数据库连接管理 - **事务处理**:探讨JDBC环境下如何正确管理和控制事务,确保数据一致性。 - **资源释放**:正确关闭...

    struts spring hibernate 面试总结.doc

    3. Spring的AOP允许在不修改源代码的情况下,对方法进行拦截,实现如日志记录、事务管理等功能。 4. Spring的DI使得对象间的依赖关系可以通过配置来解耦,提高代码的灵活性和可测试性。 使用Spring的原因在于其强大...

Global site tag (gtag.js) - Google Analytics