亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Spring+Hibernate 配置和使用c3p0和proxool連接

系統(tǒng) 2006 0

其實(shí)原理都是一樣 就是用一個繼承了實(shí)現(xiàn)javax.sql.DataSource的DataSource類

在Spring中用bean來組裝,管理 來配置其屬性 提供給sessionFactory來組裝

API上可能屬性沒有寫出來 但是可以看到方法要想真正了解 還是要看源代碼中的詳細(xì)屬性

比如在cp30中這個具體的DataSource是

com.mchange.v2.c3p0.ComboPooledDataSource
他的源代碼中有以下片段:

.............
public StringgetDriverClass()
... { return dmds.getDriverClass();}

public void setDriverClass(StringdriverClass) throws PropertyVetoException
... {
dmds.setDriverClass(driverClass);
// System.err.println("settingdriverClass:"+driverClass);
}


public StringgetJdbcUrl()
... {
// System.err.println("gettingjdbcUrl:"+dmds.getJdbcUrl());
return dmds.getJdbcUrl();
}


public void setJdbcUrl(StringjdbcUrl)
... {
dmds.setJdbcUrl(jdbcUrl);
this .resetPoolManager( false );
// System.err.println("settingjdbcUrl:"+jdbcUrl+"[dmds@"+C3P0ImplUtils.identityToken(dmds)+"]");
// if(jdbcUrl==null)
// newException("***NULLSETTER***").printStackTrace();
}


public PropertiesgetProperties()
... {
// System.err.println("gettingproperties:"+dmds.getProperties());
return dmds.getProperties();
}


public void setProperties(Propertiesproperties)
... {
// System.err.println("settingproperties:"+properties);
dmds.setProperties(properties);
this .resetPoolManager( false );
}


// DriverManagerDataSource"virtualproperties"basedonproperties
public StringgetUser()
... { return dmds.getUser();}

public void setUser(Stringuser)
... {
dmds.setUser(user);
this .resetPoolManager( false );
}


public StringgetPassword()
... { return dmds.getPassword();}

public void setPassword(Stringpassword)
... {
dmds.setPassword(password);
this .resetPoolManager( false );
................

里面有個property屬性的get和set方法

因此在bean中可以對其進(jìn)行配置

組裝到sessionFactory中之后 還可以通過hibernateProperties對Hibernate進(jìn)行一些配置

一 c3p0

beas-config.xml

<? xmlversion="1.0"encoding="UTF-8" ?>
<! DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd" >

< beans >

<!-- =================================================================== -->
<!-- JDBCdataSource -->
<!-- =================================================================== -->

<!-- ***********************************************************************
<beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<propertyname="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<propertyname="url">
<value>jdbc:mysql://localhost:3306/shtest</value>
</property>
<propertyname="username">
<value>root</value>
</property>
<propertyname="password">
<value>password</value>
</property>
</bean>
************************************************************************
-->

<!-- =================================================================== -->
<!-- c3p0dataSource -->
<!-- =================================================================== -->


< bean id ="dataSource" class ="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method ="close" >
< property name ="driverClass" >
< value > com.mysql.jdbc.Driver </ value >
</ property >
< property name ="jdbcUrl" >
< value > jdbc:mysql://localhost:3306/shtest </ value >
</ property >
< property name ="properties" >
< props >
< prop key ="c3p0.acquire_increment" > 2 </ prop >
< prop key ="c3p0.idle_test_period" > 200 </ prop >
< prop key ="c3p0.timeout" > 1000 </ prop >
< prop key ="c3p0.max_size" > 100 </ prop >
< prop key ="hibernate.c3p0.max_statements" > 100 </ prop >
< prop key ="hibernate.c3p0.min_size" > 20 </ prop >
< prop key ="user" > root </ prop >
< prop key ="password" > password </ prop >
</ props >
</ property >
</ bean >


<!-- =================================================================== -->
<!-- HibernatesessionFactory -->
<!-- =================================================================== -->

< bean id ="sessionFactory" class ="org.springframework.orm.hibernate3.LocalSessionFactoryBean" destroy-method ="close" >
< property name ="dataSource" >
< ref bean ="dataSource" />
</ property >
< property name ="mappingResources" >
< list >
< value > /com/ergal/hibernate/User.hbm.xml </ value >
</ list >
</ property >
< property name ="hibernateProperties" >
< props >
< prop key ="hibernate.dialect" > org.hibernate.dialect.MySQLDialect </ prop >
< prop key ="hibernate.show_sql" > true </ prop >
< prop key ="hibernate.current_session_context_class" > thread </ prop >
</ props >
</ property >
</ bean >

<!-- =================================================================== -->
<!-- HibernatePOJO -->
<!-- =================================================================== -->

< bean id ="userDao" class ="com.ergal.hibernate.UserDao" >
< property name ="sessionFactory" >
< ref bean ="sessionFactory" />
</ property >
</ bean >

<!-- =================================================================== -->
<!-- transactionManager -->
<!-- =================================================================== -->

< bean id ="transactionManager" class ="org.springframework.orm.hibernate3.HibernateTransactionManager" >
< property name ="sessionFactory" >
< ref bean ="sessionFactory" />
</ property >
</ bean >

<!-- =================================================================== -->
<!-- DaoProxy -->
<!-- =================================================================== -->

< bean id ="userDaoProxy" class ="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" >
< property name ="transactionManager" >
< ref bean ="transactionManager" />
</ property >
< property name ="proxyInterfaces" >
< list >
< value > com.ergal.hibernate.IUserDao </ value >
</ list >
</ property >
< property name ="target" >
< ref bean ="userDao" />
</ property >
< property name ="transactionAttributes" >
< props >
< prop key ="insert" > PROPAGATION_REQUIRED </ prop >
</ props >
</ property >

</ bean >



</ beans >

這么一來在修改數(shù)據(jù)庫連接的部分就變的非常簡單 修改后也不用修改除sessionFactory的組裝外的其他代碼

二 proxool

這個可以通過對hibernateProperties的屬性配置來設(shè)置

beans-config.xml

< bean id ="mySessionFactory" class ="org.springframework.orm.hibernate.LocalSessionFactoryBean" >
< property name ="mappingResources" >
< list >
< value > com/meagle/bo/Order.hbm.xml </ value >
< value > com/meagle/bo/OrderLineItem.hbm.xml </ value >
</ list >
</ property >

< property name ="hibernateProperties" >
< props >
< prop key ="hibernate.dialect" > net.sf.hibernate.dialect.MySQLDialect </ prop >
< prop key ="hibernate.show_sql" > true </ prop >
< prop key ="hibernate.cglib.use_reflection_optimizer" > true </ prop >
< prop key ="hibernate.proxool.xml" > C:/....../WebContent/WEB-INF/proxool.xml </ prop >
< prop key ="hibernate.proxool.pool_alias" > spring </ prop >
</ props >
</ property >
</ bean >

然后單獨(dú)寫一個proxool.xml

<? xmlversion="1.0"encoding="UTF-8" ?>
<!-- theproxoolconfigurationcanbeembeddedwithinyourownapplication's.
Anythingoutsidethe"proxool"tagisignored.
-->

< proxool >
< alias > spring </ alias >
< driver-url > jdbc:mysql://localhost:3306/shtest </ driver-url >
< driver-class > com.mysql.jdbc.Driver </ driver-class >
< driver-properties >
< property name ="user" value ="root" />
< property name ="password" value ="password" />
</ driver-properties >
< minimum-connection-count > 2 </ minimum-connection-count >
< maximum-connection-count > 20 </ maximum-connection-count >
< maximum-connection-lifetime > 180000 </ maximum-connection-lifetime > <!-- 5hours -->
< house-keeping-test-sql > values(currentTimeStamp) </ house-keeping-test-sql >
< statistics > 1m,15m,1d </ statistics >
< statistics-log-level > INFO </ statistics-log-level >
< fatal-sql-exception > Connectionisclosed,SQLSTATE=08003,Erroropeningsocket.SQLSTATE=08S01,SQLSTATE=08S01 </ fatal-sql-exception >
< fatal-sql-exception-wrapper-class > org.logicalcobwebs.proxool.FatalRuntimeException </ fatal-sql-exception-wrapper-class >
< verbose > false </ verbose >
</ proxool >

Spring+Hibernate 配置和使用c3p0和proxool連接池


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲欧美国产精品专区久久 | 亚洲免费高清视频 | 99九九热| 狠狠艹| 欧美激情一区二区 | aa毛片免费全部播放完整 | 欧美激情在线播放 | 天天操天天干天天爱 | 欧美日韩不卡中文字幕在线 | 99精品视频在线视频免费观看 | 日本视频不卡 | 亚洲国产成人精品激情 | 天天综合色天天综合网 | 亚洲精品一区最新 | 国产视频手机在线观看 | 久久国产精品只做精品 | 国产成人精品一区二区不卡 | 91国在线观看 | 麻豆一区二区三区四区 | 日本波多野结衣在线 | 天天综合久久久网 | 四虎影院在线 | 欧美视频第二页 | 天天看片夜夜爽 | 9999精品视频| 另类日本人xxxxbbbb | 色综合久久久久久久久五月 | 呦系列视频一区二区三区 | 精品香蕉99久久久久网站 | 日本久久综合视频 | 91热久久免费频精品黑人99 | 老子影院午夜久久亚洲 | 欧美性xxx久久 | 免费一级大毛片a一观看不卡 | 亚洲专区区免费 | 国产精品爱啪在线线免费观看 | 国产日韩一区二区三区 | 久久国产精品免费专区 | 影音先锋久草 | 国产高清专区 | 国产一区二区三区视频在线观看 |