答复: 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>

你可能感兴趣的:(AOP,oracle,Hibernate,bean,jdbc)