Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将JDBC数据源配置设置为XML_Java_Jdbc_Datasource - Fatal编程技术网

Java 将JDBC数据源配置设置为XML

Java 将JDBC数据源配置设置为XML,java,jdbc,datasource,Java,Jdbc,Datasource,我正在使用c3p0作为我的JDBC数据源,我想知道是否有办法将所有连接凭据抽象到一个XML配置文件中,而不是将其放在java类中 例如,我目前拥有的是: ComboPooledDataSource cpds = new ComboPooledDataSource(); cpds.setDriverClass( "org.oracle.Driver" ); //loads the jdbc driver cpds.setJdbcUrl( "jdbc:oracle://localhost/testd

我正在使用
c3p0
作为我的JDBC数据源,我想知道是否有办法将所有连接凭据抽象到一个XML配置文件中,而不是将其放在java类中

例如,我目前拥有的是:

ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass( "org.oracle.Driver" ); //loads the jdbc driver
cpds.setJdbcUrl( "jdbc:oracle://localhost/testdb" );
cpds.setUser("dbuser");
cpds.setPassword("dbpassword");
我想知道是否可以将所有这些抽象为一个XML配置文件,类似于SpringJDBC的工作方式


另外,处理具有不同连接凭据的多个不同数据库的最佳实践是什么?我目前在这些情况下使用的是条件if语句,因此如果您在QA环境中,则凭据是…,如果是开发环境,则凭据是。。。等等但是,我认为这不是很好的做法。我还可以将不同的数据库环境抽象为XML配置文件吗

我想知道是否有一种方法可以抽象出所有的联系 将凭据保存到XML配置文件中,而不是将其放在我的 java类

是的,您可以使用
Properties
对象的
XML
格式定义
XML
文件中的所有键,然后使用加载

例如,这里您的
XML
文件可以是:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
    <entry key="driverClassName">org.oracle.Driver</entry>
    <entry key="jdbcUrl">jdbc:oracle://localhost/testdb</entry>
    <entry key="user">dbuser</entry>
    <entry key="password">dbpassword</entry>
</properties>

从这里,您可以使用这些方法或访问不同密钥的值。

非常感谢!这很有帮助!所以,如果我要连接不同的jdbc驱动程序,那么我必须为它们中的每一个创建XML,对吗?或者我可以将它们存储在一个xml属性文件中吗?两者都可以完成,具体取决于您的需求。如果您想将所有内容都放在同一个文件中,只需使用不同的键名,这样您就可以简单地添加前缀,如
dev
,然后键将是
dev.drivercassname
。但在你的情况下,我建议每个环境都有一个
Properties properties = new Properties();
try (InputStream is = new FileInputStream(file)){
    properties.loadFromXML(is);
}