Spring Hibernate:确定哪个数据库连接

时间:2017-02-23 02:26:12

标签: spring hibernate

注意:我知道我可以使用脚本或数据库字段修复此问题,但我很想知道访问连接字符串。

我有两个测试环境。每个都有自己的数据库,一个用于中文,一个用于英文数据。否则两个数据库是相同的。

唯一的区别是我的beans.xml中的连接字符串(ctest vs ctestzh)。



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

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

我使用xml配置文件来配置我的应用程序以处理英文或中文数据。但是,如果我忘记将beans.xml更改为适当的数据,我会破坏数据库(即将中文数据放入英文数据库)

我可以在代码中访问连接字符串,这样如果连接到错误的数据库,我就会失败吗?我查看了SessionFactory,但没有看到任何明显的结果。

1 个答案:

答案 0 :(得分:1)

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

有关详细信息,请参阅DatabaseMetaData class