日期:2014-05-16  浏览次数:20560 次

答复: Hibernate如何动态链接数据库?
<p>首先定义两个可以切换的数据源</p>
<p>&lt;bean id="dataSource"<br> class="org.apache.commons.dbcp.BasicDataSource"<br> destroy-method="close"&gt;<br> &lt;property name="driverClassName"<br> value="oracle.jdbc.driver.OracleDriver" /&gt;<br><br> &lt;property name="url" value="${jdbc.url}" /&gt;<br> &lt;property name="username" value="${jdbc.username}" /&gt;<br> &lt;property name="password" value="${jdbc.password}" /&gt;<br> &lt;/bean&gt;</p>
<p>?</p>
<p>&lt;bean id="dataSource1"<br>??? ??? class="org.apache.commons.dbcp.BasicDataSource"<br>??? ??? destroy-method="close"&gt;<br>??? ??? &lt;property name="driverClassName" value="com.mysql.jdbc.Driver" /&gt;<br>??? ??? &lt;property name="url" value="${jdbc.url1}"/&gt;<br>??? ??? &lt;property name="username" value="${jdbc.username1}" /&gt;<br>??? ??? &lt;property name="password" value="${jdbc.password1}" /&gt;<br>??? &lt;/bean&gt;</p>
<p>?</p>
<p>?</p>
<p>2.定义spring 代理 </p>
<p>?</p>
<p>&lt;bean id="swapper"? class="org.springframework.aop.target.HotSwappableTargetSource"&gt;<br>? ??? ??? ?&lt;constructor-arg&gt;&lt;ref local="dataSource"/&gt;&lt;/constructor-arg&gt;<br>??? &lt;/bean&gt;<br>??? <br>??? &lt;bean id="swappableDataSource" class="org.springframework.aop.framework.ProxyFactoryBean"&gt;<br>??? &lt;property name="targetSource"&gt;<br>??????? &lt;ref local="swapper"/&gt;<br>??? &lt;/property&gt;<br>&lt;/bean&gt;</p>
<p>?</p>
<p>3. 注入datasource</p>
<p>??? &lt;bean id="testdao"<br>??? ??? class="com.coolhong.test.dao.testdaoibatis"&gt;<br>??? ??? &lt;property name="dataSource" ref="swappableDataSource" /&gt;<br>??? &lt;/bean&gt;</p>
<p>?</p>
<p>4. 切换datasource代码:</p>
<p>?</p>
<p>?HotSwappableTargetSource swapper = (HotSwappableTargetSource) ctx.getBean("swapper");<br>??? ??? ??? ?? Object newTarget = ctx.getBean("dataSource1");<br>??? ??? ??? ?? swapper.swap(newTarget);</p>
<p>?</p>
<p>这个时候datasource 就自动切换到datasource1</p>
<p>?</p>
<p>?</p>
<p>?</p>
<p>?</p>
<p>第一次回复 ,如果有什么错误的地方 请指正</p>
<p>?</p>
<p>?</p>
<p>?</p>