SSH框架三种数据源的配置

本文详细介绍了在Spring框架中配置数据源的三种方法:原始方式、使用ComboPooledDataSource及DruidDataSource,并提供了完整的XML配置示例。同时,还展示了如何配置Hibernate的SessionFactory和其他相关组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

applicationContext.xml 中数据源有三种配置方式:
[b]一:原始方式[/b]
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!-- 指定数据库驱动-->
<property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
<!-- 指定连接数据库的URL-->
<property name="url"><value>jdbc:mysql://wonder:3306/j2ee</value></property>
<!-- root为数据库的用户名-->
<property name="username"><value>root</value></property>
<!-- pass为数据库密码-->
<property name="password"><value>pass</value></property>
</bean>
[b]二:ComboPooledDataSource[/b][color=red]注:需导入c3p0-0.9.0.2.jar[/color]
<bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="jdbcUrl">
<value>jdbc:oracle:thin:@192.168.20.200:1521:et361</value>
</property>
<property name="user"><value>test</value></property>
<property name="password"><value>123456</value></property>
<property name="minPoolSize"><value>20</value></property>
<property name="maxPoolSize"><value>100</value></property>
<property name="initialPoolSize"><value>10</value></property>
<property name="maxIdleTime"><value>60</value></property>
<property name="acquireIncrement"><value>10</value></property>
<property name="maxStatements"><value>0</value></property>
<property name="idleConnectionTestPeriod"><value>60</value></property>
<property name="acquireRetryAttempts"><value>30</value></property>
<property name="breakAfterAcquireFailure"><value>true</value></property>
<property name="testConnectionOnCheckout"><value>false</value></property>
</bean>
[b]三:DruidDataSource[/b][color=red]注:需导入druid-0.2.23.jar[/color]
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<property name="url" value="jdbc:oracle:thin:@192.168.20.200:1521:et361" />
<property name="username" value="NEWET361" />
<property name="filters" value="config,stat" />
<property name="password" value="123456" />
<property name="initialSize" value="1" />
<property name="minIdle" value="1" />
<property name="maxActive" value="20" />
<property name="maxWait" value="60000" />
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<property name="minEvictableIdleTimeMillis" value="300000" />
<property name="validationQuery" value="SELECT 'x'" />
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<property name="poolPreparedStatements" value="true" />
<property name="maxPoolPreparedStatementPerConnectionSize" value="20" />

</bean>

[b]以下就是一些常见的配置:[/b]
<!-- [b]sessionFactory[/b] -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="mappingResources">
<list>
<!-- 存放 POJO配置文件 -->
<value>com/omhy/common/model/entity/Flights.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.hbm2ddl.auto">false</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle9iDialect</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.query.substitutions">true 1, false 0, yes 'Y', no 'N'</prop>
<prop key="hibernate.bytecode.use_reflection_optimizer">true</prop>
<prop key="hibernate.cache.provider_class">
org.hibernate.cache.EhCacheProvider</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.cache.use_structured_entries">false</prop>
<prop key="hibernate.max_fetch_depth">0</prop>
<prop key="hibernate.jdbc.fetch_size">50</prop>
<prop key="hibernate.jdbc.batch_size">20</prop>
</props>
</property>
<property name="dataSource"> <ref bean="dataSource" /></property>
</bean>
<bean id="jdbcExceptionTranslator" class="org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator">
<property name="dataSource"><ref bean="dataSource" /></property>
</bean>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory"><ref bean="sessionFactory" /></property>
<property name="jdbcExceptionTranslator">
<ref bean="jdbcExceptionTranslator" />
</property>
</bean>
<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="get*" read-only="true" />
<tx:method name="query*" read-only="true" />
<tx:method name="search*" read-only="true" />
<tx:method name="save*" propagation="REQUIRED"
rollback-for="Exception" />
<tx:method name="update*" propagation="REQUIRED"
rollback-for="Exception" />
<tx:method name="delete*" propagation="REQUIRED"
rollback-for="Exception" />
<tx:method name="create*" propagation="REQUIRED"
rollback-for="Exception" />
<tx:method name="do*" propagation="REQUIRED" rollback-for="Exception" />
<tx:method name="distribute*" propagation="REQUIRED"
rollback-for="Exception" />
</tx:attributes>
</tx:advice>
<!-- end 事务配置 -->
<!-- 切面配置 -->
<aop:config>
<aop:pointcut id="etAop" expression="execution(* com.omhy.*.model.service.*.*(..)) or execution(* com.omhy.*.model.dao.*.*(..)) " />
<aop:advisor advice-ref="txAdvice" pointcut-ref="etAop" />
</aop:config>
<aop:config proxy-target-class="true">
<aop:pointcut id="etAction" expression="execution(* com.omhy.*.action.*.*(..)) and !execution(* com.omhy.*.action.*.validate*(..)) and !execution(* com.omhy.*.action.*.*dwr(..))" />
<aop:advisor advice-ref="actionAdvice" pointcut-ref="etAction" />
</aop:config>
<!-- end 切面配置 -->
<!-- 通知配置 -->
<bean id="actionAdvice" class="com.omhy.advice.ActionAdvice" scope="request"></bean>


<!-- 各application成员配置 -->
<import resource="application-test.xml"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值