【菜鳥學Java】9:使用dom4j解析jdbc.xml__Java

來源:互聯網
上載者:User

        最開始的時候,程式中需要操作資料庫了,我們會把串連資料庫的JDBC代碼寫到我們的商務邏輯代碼裡面,這樣,每串連一次,就要寫一遍JDBC串連-關閉的代碼,這樣的寫法顯然是很糟糕的,一旦資料庫有所變更,那麼你將要修改你的程式中所有使用JDBC的程式塊,一個一個的改固然讓人抓狂,批量替換也不是什麼好辦法。

        因此我們就開始了抽象和封裝,將串連資料庫的代碼抽取出來,寫成一個工具類,專門負責維護JDBC的串連資訊,然後在我們要串連資料庫的地方引用這個JDBC工具類,即可完成資料庫的串連,進而操作資料庫的表和資料。那麼問題又來了,如果要更換資料庫,那麼依然要修改JDBC工具類,並且重新編譯,才可以完成資料庫的切換,這個也不是很高明的辦法。

        最後我們想出了使用XML設定檔,來維護JDBC的串連資訊,這樣只要在JDBC工具類裡面讀取設定檔的內容即可。而設定檔是支援熱部署的,就是可以在不動任何程式碼的情況下,更換和修改資料庫的串連資訊,這樣做是不是更爽呢。那麼問題又來了,怎麼讀取設定檔呢。請接著往下看。

        想要解析XML,大致有四種方式:DOM、JDOM、SAX以及我們馬上要使用的DOM4J。

關於他們的介紹和比較,在本文就不再詳細說明了,大家可以自己找資料進行學習。下面我就來代碼實戰,說說怎麼使用dom4j解析xml。

        首先要準備一個jdbc的設定檔jdbc.xml,如下所示:

<span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8"?><config><db-info><driver-name>oracle.jdbc.driver.OracleDriver</driver-name><url>jdbc:oracle:thin:@localhost:1521:Databasename</url><user-name>username</user-name><password>password</password></db-info></config></span>

        然後再準備一個實體類JdbcConfig.java,用於方便的操作解析出來的jdbc配置資訊,如下:

public class JdbcConfig {private String driverName;private String url;private String userName;private String password;public String getDriverName() {return driverName;}public void setDriverName(String driverName) {this.driverName = driverName;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return this.getClass().getName() + "{driverName:" + driverName + ", url:" + url + ", userName:" + userName + "}";}}

        之後就要寫XML的解析器了,在使用dom4j之前當然要先引入jar包了,如下圖所示,jar包自己可以去網上下載:


        解析器XmlConfigReader.java的代碼如下;

/** * 採用單例模式解析xml檔案  * @author ljw * */public class XmlConfigReader {//懶漢式(消極式載入lazy)private static XmlConfigReader instance = null;//儲存jdbc相關配置資訊private JdbcConfig jdbcConfig = new JdbcConfig();private XmlConfigReader() {SAXReader reader = new SAXReader();InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("jdbc.xml");try {Document doc = reader.read(in);//取得jdbc相關配置資訊Element driverNameElt = (Element)doc.selectObject("/config/db-info/driver-name");Element urlElt = (Element)doc.selectObject("/config/db-info/url");Element userNameElt = (Element)doc.selectObject("/config/db-info/user-name");Element passwordElt = (Element)doc.selectObject("/config/db-info/password");//設定jdbc相關的配置jdbcConfig.setDriverName(driverNameElt.getStringValue());jdbcConfig.setUrl(urlElt.getStringValue());jdbcConfig.setUserName(userNameElt.getStringValue());jdbcConfig.setPassword(passwordElt.getStringValue());} catch (DocumentException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static synchronized XmlConfigReader getInstance() {if (instance == null) {instance = new XmlConfigReader();}return instance;}/** * 返回jdbc相關配置 * @return */public JdbcConfig getJdbcConfig() {return jdbcConfig;}public static void main(String[] args) {JdbcConfig jdbcConfig = XmlConfigReader.getInstance().getJdbcConfig();System.out.println(jdbcConfig);}}

        最後,在JDBC工具類中使用XmlConfigReader對象擷取JDBC的配置資訊了,代碼如下

public class DbUtil {/** * 取得Connection * @return */public static Connection getConnection() {Connection conn = null;try {JdbcConfig jdbcConfig = XmlConfigReader.getInstance().getJdbcConfig();Class.forName(jdbcConfig.getDriverName());conn = DriverManager.getConnection(jdbcConfig.getUrl(), jdbcConfig.getUserName(), jdbcConfig.getPassword());} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}return conn;}public static void main(String[] args) {System.out.println(DbUtil.getConnection());}}

        小結一下:         DOM4J 是一個非常非常優秀的Java XML API,具有效能優異、功能強大和極端易用使用的特點,同時它也是一個開放原始碼的軟體。如今你可以看到越來越多的 Java 軟體都在使用 DOM4J 來讀寫 XML,特別是連 Sun 的 JAXM 也在用 DOM4J,還有大名鼎鼎的Hibernate也用它來讀取XML設定檔。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.