本篇文章為大家展示了利用java如何實(shí)現(xiàn)一個(gè)DataSource功能,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
DataSource 對(duì)象所表示的物理數(shù)據(jù)源的連接。作為 DriverManager 工具的替代項(xiàng)。DataSource能提供最高性能的對(duì)數(shù)據(jù)庫(kù)的并發(fā)訪問(wèn),數(shù)據(jù)源技術(shù)是Java操作數(shù)據(jù)庫(kù)的一個(gè)很關(guān)鍵技術(shù),流行的持久化框架都離不開(kāi)數(shù)據(jù)源的應(yīng)用。
數(shù)據(jù)源提供了一種簡(jiǎn)單獲取數(shù)據(jù)庫(kù)連接的方式,并能在內(nèi)部通過(guò)一個(gè)池的機(jī)制來(lái)復(fù)用數(shù)據(jù)庫(kù)連接,這樣就大大減少了創(chuàng)建數(shù)據(jù)庫(kù)連接的次數(shù),提高了系統(tǒng)性能。下面,我們自己動(dòng)手實(shí)現(xiàn)個(gè)精簡(jiǎn)的數(shù)據(jù)源,代碼如下:
public class MyDataSource { private LinkedListconnectionPool = new LinkedList (); public MyDataSource() { for (int i = 0; i < 10; i++) { connectionPool.add(new MyConnection(creatConnection(),this)); } } private Connection creatConnection() { try { return DriverManager.getConnection( "jdbc:mysql://localhost:3306/test", "root", "root"); } catch (SQLException e) { // TODO Auto-generated catch block throw new ExceptionInInitializerError(); } } public Connection getConnection(){ System.out.println(connectionPool.size()); return connectionPool.removeFirst(); } public void freeConnection(Connection conn){ System.out.println("DataSource Close Connection"); connectionPool.addLast(conn); } }