bboss持久層資料庫擴充卡編寫和注冊方法
bboss持久層預設提供了以下資料庫的擴充卡:
- as400
- db2app
- db2net
- cloudscape
- hypersonic
- interbase
- instantdb
- mssql
- mysql
- mariadb
- oracle
- postgresql
- sapdb
- sybase
- weblogic
- axion
- informix
- odbc
- msaccess
- derby
- sqlite
随着資料庫技術的發展,不斷有新的資料庫技術出現,是以我們需要針對這些新的資料庫實作特定的擴充卡,本文介紹如何實作具體的擴充卡,以國内的達夢資料庫為示例。
1.編寫擴充卡
所有的擴充卡都需要繼承抽象類:
com.frameworkset.orm.adapter.DB
可以任意擴充實作抽象類中DB的方法,比如生成分頁sql的方法,如果不需要則無需覆寫。擴充擴充卡的分頁機制執行個體:
http://yin-bp.iteye.com/blog/1278360達夢資料庫擴充卡:
package com.frameworkset.orm.adapter;
import java.sql.Connection;
import java.sql.SQLException;
import com.frameworkset.orm.adapter.DB;
public class DBDM extends DB{
@Override
public String toUpperCase(String in) {
// TODO Auto-generated method stub
return in;
}
@Override
public String getIDMethodType() {
// TODO Auto-generated method stub
return NO_ID_METHOD;
}
@Override
public String getIDMethodSQL(Object obj) {
// TODO Auto-generated method stub
return "";
}
@Override
public void lockTable(Connection con, String table) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void unlockTable(Connection con, String table) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public String ignoreCase(String in) {
// TODO Auto-generated method stub
return in;
}
}
2.注冊擴充卡
寫好後,在poolman.xml中進行配置注冊即可:
<poolman>
<adaptor dbtype="dm">com.frameworkset.orm.adapter.DBDM</adaptor>
<adaptor dbtype="dm.jdbc.driver.DmDriver">com.frameworkset.orm.adapter.DBDM</adaptor>
....
</poolman>
這裡需要注冊了兩次,一次以dm資料庫的驅動程式dm.jdbc.driver.DmDriver進行注冊,一個以dm作為别名進行注冊,這樣便于在編寫多資料庫sql語句時使用這個别名配置特定資料庫的sql語句,bboss持久層配置多資料庫語句的文檔請參考:
http://yin-bp.iteye.com/blog/1180111注意:
adaptor 的dbtype屬性值可以是一個别名,或者直接是對應資料庫的驅動包路徑,例如:oracle.jdbc.driver.OracleDriver
上面也用達夢資料庫的驅動dm.jdbc.driver.DmDriver注冊了我們自己寫的達夢資料庫擴充卡,同時也用一個簡寫的别名dm注冊了達夢資料庫擴充卡。
預設的dbtype别名有:
如果dbtype使用的别名與預設别名重複,則将覆寫預設的資料庫擴充卡,如果不想,則需要指定其他的别名,比如下面的dbtype="myoracle",這樣我們要引用這個擴充卡的話,需要在datasource中明确指定這個别名:
<datasource>
...........
<dbtype>myoracle</dbtype>
..............
</datasource>
如果資料源指定了dbtype,則bboss持久層加載資料源會通過對于的dbtype檢索注冊的資料庫擴充卡,否則會通過資料庫驅動包路徑檢索對應的資料庫擴充卡。