2017-02-23 56 views
0

注意:我知道我可以使用腳本或數據庫字段解決此問題,但我很好奇訪問連接字符串。Spring Hibernate:確定哪個數據庫連接

我有兩個測試環境。每個人都有自己的數據庫,一個用於中文,一個用於英文數據。否則,兩個數據庫是相同的。

唯一的區別是我的beans.xml(ctest vs ctestzh)中的連接字符串。

\t <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" 
 
\t \t destroy-method="close"> 
 
\t \t <property name="driverClass" value="org.postgresql.Driver" /> 
 
\t \t <property name="jdbcUrl" value="jdbc:postgresql://localhost/ctest?useUnicode=true&#38;characterEncoding=utf8" /> 
 
\t \t <property name="user" value="testuser" /> 
 
\t \t <property name="password" value="xxxx" /> 
 
.... 
 
\t </bean> 
 

 
\t <!-- Hibernate 
 
\t <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" 
 
\t \t destroy-method="close"> 
 
\t \t <property name="driverClass" value="org.postgresql.Driver" /> 
 
\t \t <property name="jdbcUrl" value="jdbc:postgresql://localhost/ctestzh?useUnicode=true&#38;characterEncoding=utf8" /> 
 
\t \t <property name="user" value="testuser" /> 
 
\t \t <property name="password" value="xxxx" /> 
 
..... 
 
\t </bean>-->

我用我的配置適用於任一過程英語或中國數據的XML配置文件。但是,如果我忘記將beans.xml更改爲適當的數據,我會損壞數據庫(即將中文數據放入英文數據庫)

我可以在代碼中訪問連接字符串,因此如果我連接到錯誤的數據庫?我看了SessionFactory,但沒有看到任何明顯的。

回答

1
public String getConnectionString(DataSource dataSource) { 
    return dataSource.getConnection().getMetaData().getURL(); 
} 

有關更多信息,請參閱DatabaseMetaData class

相關問題