java hibernate 和 ibetas 兩者在數(shù)據(jù)庫交互中的具體實(shí)現(xiàn)過程是怎么樣的,求解?
java hibernate 和 ibetas 兩者在數(shù)據(jù)庫交互中的具體實(shí)現(xiàn)過程是怎么樣的,求解?
沒有明白你的意思。不過hibernate 是純面向?qū)ο蟮摹?/p>
在實(shí)現(xiàn)中不用或很少寫SQL。
而ibatis(不是ibetas 吧)是需要寫SQL的。應(yīng)用的區(qū)別在于使用的效率,是否有復(fù)雜SQL等。
mybatis怎么實(shí)現(xiàn)兩種數(shù)據(jù)庫的兼容
方法:在系統(tǒng)運(yùn)行過程中,針對(duì)不同數(shù)據(jù)庫類型區(qū)分加載不同文件路徑下的sqlmap配置。留給開發(fā)人員做的事依舊是快樂地編寫原始數(shù)據(jù)庫語句,而不再為多數(shù)據(jù)庫兼容問題撓頭。
分析問題: 1、解決ibatis多數(shù)據(jù)庫兼容的問題,實(shí)際上就是讓ibatis可以自動(dòng)選擇不同數(shù)據(jù)庫sqlmap配置文件。
2、打開ibatis源碼工程并進(jìn)行代碼跟蹤,最終定位到com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.java處,系統(tǒng)中運(yùn)行的sqlmap節(jié)點(diǎn)均從這里統(tǒng)一轉(zhuǎn)化加載的。 3、很明顯SqlMapConfigParser源碼中的addSqlMapNodelets負(fù)責(zé)解析“/sqlMapConfig/sqlMap”路徑,即也就是sqlmap文件路徑。 4、要實(shí)現(xiàn)“多數(shù)據(jù)庫兼容”,這里改造下這個(gè)方法即可。 解決方法: 1、**我們?cè)诠?jié)點(diǎn)新增一個(gè)“DBProductName”用于判斷數(shù)據(jù)庫種類。
當(dāng)然通過java.sql.DatabaseMetaData也可以獲得,但這太依賴于jdbc驅(qū)動(dòng),還是手動(dòng)配置保險(xiǎn)。 2、重構(gòu)SqlMapConfigParser的addSqlMapNodelets方法。 百科\” 1)**獲得單個(gè)sqlmap文件的位置,如 sqlmap主目錄\\XXX.xml; 2)依據(jù)上面設(shè)置的DBProductName屬性值獲得數(shù)據(jù)庫類型; 3)將sqlmap的文件路徑重定位到運(yùn)行數(shù)據(jù)庫類型文件下。
如 sqlmap主目錄\\mysql\\XXX.xml,代表程序當(dāng)前運(yùn)行于msql數(shù)據(jù)庫上,并加載系統(tǒng)mysql數(shù)據(jù)庫對(duì)應(yīng)的 sqlmap文件\” 4、ok,現(xiàn)在ibatis支持“多數(shù)據(jù)庫兼容”了(完整源碼見附件)。 使用方法: 1、編譯SqlMapConfigParser.java生成可運(yùn)行文件SqlMapConfigParser.class(見附件),并將其覆蓋添加到ibatis.jar中。 2、在系統(tǒng)sqlmap配置文件存放主目錄如src\\conf\\mapping添加多數(shù)據(jù)庫兼容支持的子目錄,如src\\conf\\mapping\\mysql,src\\conf\\mapping\\oracle等 3、以實(shí)際項(xiàng)目需要編寫多數(shù)據(jù)庫sqlmap配置文件。
ibatis如何連接到oracle數(shù)據(jù)庫
IBa