`
badboy_990726
  • 浏览: 11959 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

spring配置hibernate的sessionFactory

阅读更多
之前用spring2+hibernate3+struts2开发了一个彩信发布系统,由于第一次使用此架构,造成applicationContext.xml中的配置非常冗长,而且经常因为更改一个小配置项(例:数据库ip、用户名、密码等)将此文件作修改,这及不利于项目维护,万一粗心造成其他地方变动,会对本来正常的项目造成bug
    其实那个项目我最后做了分隔,将applicationContext.xml分隔成好几段,但是我觉得其实对于数据库方面的配置,完全可以通过加载hibernate.cfg.xml配置文件来配置项目的sessionFactory,所以这个新项目我决定使用此方式
    这里介绍一下spring加载sessionFactory的这2种方式
    1、通过配置dataSource来配置sessionFactory
    applicationContext.xml
	<!-- 数据库配置 -->
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">
		<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
		<property name="url" value="jdbc:mysql://192.168.0.2:3306/tuke_mmsmsys"></property>
		<property name="username" value="admin"></property>
		<property name="password" value="richard"></property>

		<!-- Connection Pooling Info -->
		<property name="maxActive" value="20" />
		<property name="maxIdle" value="5" />
		<property name="maxWait" value="5000" />
		<property name="validationQuery" value="select count(0) from admin" />
	</bean>
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
				<prop key="hibernate.show_sql">true</prop>
			</props>
		</property>
		<property name="mappingDirectoryLocations">
			<list>
				<value>
					classpath:com/tukechina/mms/pojos       
            	</value>
			</list>
		</property>
	</bean>

    2、通过加载hibernate.cfg.xml来配置sessionFactory
    applicationContext.xml
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="configLocation" value="classpath:hibernate.cfg.xml">
		</property>
	</bean>

    hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                                         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory name="mysql">
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.password">1234</property>
		<property name="hibernate.connection.url">jdbc:mysql://localhost/goodshool</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="hibernate.show_sql">true</property>

		<!-- 最大连接数 -->
		<property name="hibernate.c3p0.max_size">20</property>
		<!-- 最小连接数 -->
		<property name="hibernate.c3p0.min_size">5</property>
		<!-- 获得连接的超时时间,如果超过这个时间,会抛出异常,单位毫秒 -->
		<property name="hibernate.c3p0.timeout">120</property>
		<!-- 最大的PreparedStatement的数量 -->
		<property name="hibernate.c3p0.max_statements">100</property>
		<!-- 每隔120秒检查连接池里的空闲连接 ,单位是秒-->
		<property name="hibernate.c3p0.idle_test_period">120</property>
		<!-- 当连接池里面的连接用完的时候,C3P0一下获取的新的连接数 -->
		<property name="hibernate.c3p0.acquire_increment">2</property>

		<!-- 每次都验证连接是否可用 -->
		<property name="hibernate.c3p0.validate">true</property>
		<mapping resource="com/shangx/pojos/User.hbm.xml" />
	</session-factory>
</hibernate-configuration>

对于第二种配置方案,找到的资料很少,大多数采用第一种,其实还有一种较好的配置
    3、通过配置jdbc.properties文件分离数据库的配置
    jdbc.properties
Mysqljdbc.driverClassName=com.mysql.jdbc.Driver
Mysqljdbc.url=jdbc:mysql://localhost/goodshool
Mysqljdbc.username=root
Mysqljdbc.password=1234

# second cache statistics
hibernate.generate_statistics=true

# Property that determines the Hibernate dialect
# (only applied with "applicationContext-hibernate.xml")
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.show_sql=true

    applicationContext.xml
	<bean id="propertyConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="location" value="classpath:jdbc.properties" />
	</bean>

	<!-- 数据库配置 -->
	<bean id="mysqlDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
		destroy-method="close">
		<property name="driverClass">
			<value>${Mysqljdbc.driverClassName}</value>
		</property>
		<property name="jdbcUrl">
			<value>${Mysqljdbc.url}</value>
		</property>
		<property name="user">
			<value>${Mysqljdbc.username}</value>
		</property>
		<property name="password">
			<value>${Mysqljdbc.password}</value>
		</property>

		<!-- 最小连接数 -->
		<property name="minPoolSize">
			<value>5</value>
		</property>
		<!-- 达到最大连接数后可以增加的连接数 个 -->
		<property name="acquireIncrement">
			<value>2</value>
		</property>
		<!-- 最大连接数 -->
		<property name="maxPoolSize">
			<value>20</value>
		</property>
		<!-- 最大闲置时间 秒 -->
		<property name="maxIdleTime">
			<value>600</value>
		</property>
		<!-- 最大的PreparedStatement的数量 -->
		<property name="maxStatements" value="100"></property>
		<!-- 闲置的连接测试周期 (秒) -->
		<property name="idleConnectionTestPeriod">
			<value>120</value>
		</property>
	</bean>

	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<!--
			<property name="configLocation" value="classpath:hibernate.cfg.xml"
			/> <property name="configurationClass"
			value="org.hibernate.cfg.AnnotationConfiguration" />
		-->
		<property name="dataSource">
			<ref bean="mysqlDataSource" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.generate_statistics">
					${hibernate.generate_statistics}
   	 			</prop>
				<prop key="hibernate.dialect">
					${hibernate.dialect}
    			</prop>
				<prop key="hibernate.show_sql">
					${hibernate.show_sql}
    			</prop>
			</props>
		</property>
		<property name="mappingDirectoryLocations">
			<list>
				<value>
					classpath:com/shangx/pojos 
            	</value>
			</list>
		</property>
	</bean>
分享到:
评论

相关推荐

    spring配置sessionFactory(spring3.2.3+hibernate4.2.2)

    一个实例小工程,讲解的是将hibernate的sessionFactory交给spring管理的配置方法

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    12.6.16 编写Spring和Hibernate的配置文件spring-config.xml 12.6.17 编写web.xml 12.6.18 验证示例 12.7 小结 第四篇 J2EE项目案例精选 第十三章 网上调查系统 13.1 系统概述 13.2 需求分析 13.2.1 系统用例图 ...

    第24次课-1 Spring与Hibernate的整合

    Spring配置管理SessionFactory与数据库的连接,在实际的应用中,数据源会采用依赖注入的方式,传递给SessionFactory。 见beans-config_sh.xml 24.3 Spring对Hibernate的简化 24.3.1 概述 Hibernate的持久层访问步骤...

    springMVC + Hibernate 工程模板

    两种配置:oracle mysql,切换数据库只要把SessionFactory的配置文件改成对应就可以了 c3p0配置:mysql调试通过,oracle由于存在问题,未配置 spring配置式事务管理(jdk动态代理,每个service必须对应一个接口) ...

    Spring + Hibernate + Struts 事务配置小例子(带提示框等小技巧)

    前几天搞 Spring + Hibernate + Struts 事务配置 ,网上找了好多资料,不过好无语,大多都是 Ctrl + V,浪费俺的宝贵时间 现在我总结配出一套,给大家参考参考,可能有不足,请大家多多交流。 附:内有弹出...

    Spring+hibernate+quartz 定时操作数据库

    在spring+hibernate的框架中定时操作数据库,主要是拿到sessionFactory,不会出现no session 和transaction no-bound等问题,由sessionFactory完成对数据的操作,有些包是没有用的,有兴趣的可以自己删除掉

    Spring整合Hibernate

    Spring4整合Hibernate4实现用户购买图书和结账等操作,整合主要实现用IoC容器来管理Hibernate的SessionFactory实例,并使Hibernate使用Spring所提供的声明式事务……

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    12.6.16 编写Spring和Hibernate的配置文件spring-config.xml 12.6.17 编写web.xml 12.6.18 验证示例 12.7 小结 第四篇 J2EE项目案例精选 第十三章 网上调查系统 13.1 系统概述 13.2 需求分析 13.2.1 系统用例图 ...

    使用Maven Hibernate5 之Spring整合

    在准备整合Spring之前,也在网上看了各种配置。但是楼主心里还是很纠结,...楼主还是一步一步的来吧,感觉Spring操作Hibernate还是离不开DataSource,SessionFactory,Transaction这几个要素。 详细说明看我的博客文章。

    Spring4.0+Hibernate4.0+Struts2.3整合案例

    1、Spring 3.x 对 Hibernate 4.x 不提供 HibernateDaoSupport,所以在dao的实现层注入SessionFactory 2、报错:org.hibernate.HibernateException: No Session found for current thread 意思是必须在...

    spring-hibernate整合实例

    spring整合hibernate 1、用spring IOC容器管理hibernate的sessionFactory;2、hibernate使用spring的声明式事务管理;

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    12.6.16 编写Spring和Hibernate的配置文件spring-config.xml 12.6.17 编写web.xml 12.6.18 验证示例 12.7 小结 第四篇 J2EE项目案例精选 第十三章 网上调查系统 13.1 系统概述 13.2 需求分析 13.2.1 系统用例图 ...

    Spring整合Hibernate 详解.doc

    6.5.2 管理Hibernate的SessionFactory 6.5.3 使用HibernateTemplate 6.5.4 使用HibernateCallBack 6.5.6 使用IoC容器组装各种组件 6.5.7启动web容器读取xml配置文件 6.5.8了解继承自HibernateDaoSupport类DAO

    Struts,Spring,Hibernate三大框架的面试&笔试题

    1.Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6.提交事务 7.关闭Session 8.关闭...

    详细解释Spring与Hibernate的整合原理

    spring与hibernate的整合目的就是为了让 IOC 容器来管理 Hibernate 的核心接口SessionFactory以及让 Hibernate 使用上 Spring 的声明式事务来进行事务操作.  但在Spring整合Hibernate时。处理数据源有两种方法:  1...

    利用Spring来管理Hibernate完整例子

    其中Hibernate每次都需要手动创建SessionFactory,Session,手动开启提交关闭事务。而这一切操作完全是由Spring来代替。使持久层更加方便,使开发人员减少持久层操作,把注意力放到业务上。

    Spring_Hibernate集成

    * 配置SessionFactory * 配置事务管理器 * 事务的传播特性 * 那些类那些方法使用事务 2、编写业务逻辑方法 * 继承HibernateDaoSupport类,使用HibernateTemplate来持久化,HibernateTemplate是 Hibernate ...

    SSH整合中 hibernate托管给Spring得到SessionFactory

    Spring文件中的 SessionFactory中 加入为了能得到同一个Session

    OSGi、Spring、Hibernate集成:动态注册实体类

    统一管理SessionFactory,分散注册实体类。平台依赖度低的解决方案 ...其它用到的Bundle包括hibernate、hibernate-annotation、hsqldb、 spring、spring-osgi等。请到http://www.springsource.com/repository/下载。

    ssh(structs,spring,hibernate)框架中的上传下载

     由于Spring通过代理Hibernate完成数据层的操作,所以原Hibernate的配置文件hibernate.cfg.xml的信息也转移到Spring的配置文件中:  代码 4 Spring中有关Hibernate的配置信息 1. 2. !-- 数据源的配置 //--> 3. ...

Global site tag (gtag.js) - Google Analytics