连接数据库时使用java.util.properties有什么好处?

HRg*_*ger 0 java oracle jdbc

我正在阅读Oreilly Java Programming with Oracle JDBC edition,我注意到有一个使用java.util.properties对象的例子,如下所示;

public class Connector {


    Connection con = null;
    private Properties info = new Properties();

    public void connect(){
        info.put("user", "sys as sysdba");
        info.put("password", "testpass");
        String driverName = "oracle.jdbc.driver.OracleDriver";

        try {
            Class.forName(driverName);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


        String serverName = "localhost";
        String port = "1521";
        String sid = "XE";
        String url = "jdbc:oracle:thin:@" + serverName + ":" + port + ":" + sid;



        try {
            con = DriverManager.getConnection(url, info);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    public void closeConnection(){

        try {
            con.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

我检查了API,我了解属性的主要好处是阅读本地资源.Google OCI驱动程序示例使用java.util.properties以上的驱动程序示例.我的问题是;

*我应该使用薄驱动程序的属性吗?*如果是的话会有什么好处?

*为什么我不能将完整的详细信息转换为我必须使用String对象进行连接的属性?

谢谢

Bal*_*usC 5

可以jdbc.properties类路径上的某个文件加载属性,这允许您进行外部配置.它的唯一内容可能如下:

user=sys as sysdba
password=testpass
Run Code Online (Sandbox Code Playgroud)

所以,而不是

info.put("user", "sys as sysdba");
info.put("password", "testpass");
Run Code Online (Sandbox Code Playgroud)

做到的

info.load(getClass().getResourceAsStream("/jdbc.properties"));
Run Code Online (Sandbox Code Playgroud)

(请注意,文件名可以自由选择,只要它在运行时类路径中就可以工作)

这样,无论何时想要更改连接详细信息,都无需编辑,重新编译,重建,大惊小怪.您只需编辑一个简单的基于文本的文件.这在需要由没有任何Java知识的人(例如serveradmins)管理的分布式应用程序中特别有用.

也可以看看: