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