❶ 請教IBATIS連接池問題
會有的,其實是資料庫有限制
❷ spring +ibatis 如何配置多個連接池
多個連接池就是多數鄭咐譽據庫,要用到spring的JTA事件管喊段理器簡飢,就可以了,參考spring參考手冊只要事務配置改用
❸ ibatis怎麼連接mysql資料庫連接池
1、Ibatis是MyBatis的前身,它是一個開源的持久層框架。它的核心是SqlMap——將實體Bean跟關系資料庫進行映射,將業務代碼和SQL語句的書寫進行分開。
2、Ibatis是「半自動化」的ORM持久層框架。這里的「半自動化」是相對Hibernate等提供了全面的資料庫封裝機制的「全自動化」ORM實現而言的,納稿伏「全自動」ORM實現了POJO與資料庫表欄位之間的映射並且實現了SQL的自動生成和執行。
3、而Ibatis的著力點,則在於POJO與SQL之間的映射關系,即Ibatis並不會為程序員在運行期自動生成並執行SQL,具體的SQL語句需要程序員編寫,然後通過映射配置文件將SQL語句所需的參數和返回的結果欄位映射到指定POJO中。
4、StudentDao.java文件中的代碼:
packagecom.ghj..imp;importjava.io.IOException;importjava.io.Reader;importjava.sql.SQLException;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importcom.ghj..IStudentDao;importcom.ghj.vo.Student;importcom.ibatis.common.resources.Resources;importcom.ibatis.sqlmap.client.SqlMapClient;importcom.ibatis.sqlmap.client.SqlMapClientBuilder;/***學生管理數據訪問層介面實現類**@author高煥傑*/{;publicStudentDao(){Stringresource="config/sqlMapConfig.xml";try{Readerreader=Resources.getResourceAsReader(resource);//讀取配置文件sqlMapClient=SqlMapClientBuilder.buildSqlMapClient(reader);}catch(IOExceptione){e.printStackTrace();}}/***添加學生信息**@author高煥傑*/@Overridepublicbooleanadd(Studentstudent)throwsSQLException{returnsqlMapClient.update("add",student)>0;}/***依據用戶名刪除學生信息**@author高煥傑*/@(StringuserName)throwsSQLException{returnsqlMapClient.delete("deleteByUserName",userName)>敬野0;}/***依據用戶名更新密碼**@author高煥傑*/@(StringuserName,Stringpassword)throwsSQLException{Map<String,Object>params=newHashMap<String,Object>();params.put("洞攜userName",userName);params.put("password",password);returnsqlMapClient.update("updatePasswordByUserName",params)>0;}/***根據學生用戶名查詢學生信息**@author高煥傑*/@(StringuserName)throwsSQLException{return(Student)sqlMapClient.queryForObject("findByUserName",userName);}/***查詢所有學生信息**@author高煥傑*/@Override@SuppressWarnings("unchecked")publicList<Student>findAll()throwsSQLException{returnsqlMapClient.queryForList("findAll");}}
student.xml文件中的代碼:
<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEsqlMapPUBLIC"-//ibatis.apache.org//DTDSQLMap2.0//EN""
!--為Student類設置一個別名--><typeAliasalias="student"type="com.ghj.vo.Student"/><!--配置表和實體Bean之間的映射關系--><resultMapid="studentMap"class="com.ghj.vo.Student"><resultproperty="id"column="id"/><resultproperty="userName"column="user_name"/><resultproperty="password"column="password"/><resultproperty="state"column="state"/></resultMap><!--添加學生信息--><insertid="add"parameterClass="student">insertintostudentvalues(#id#,#userName#,#password#,#state#)</insert><!--依據用戶名刪除學生信息--><deleteid="deleteByUserName"parameterClass="java.lang.String">deletefromstudentwhereuser_name=#userName#</delete><!--依據用戶名更新密碼--><updateid="updatePasswordByUserName"parameterClass="java.util.HashMap">updatestudentsetpassword=#password#whereuser_name=#userName#</update><!--根據學生用戶名查詢學生信息--><selectid="findByUserName"parameterClass="string"resultMap="studentMap">select*fromstudentwhereuser_name=#userName#</select><!--查詢所有學生信息--><selectid="findAll"resultMap="studentMap">select*fromstudent</select></sqlMap>
❹ ibatis 連接池資源釋放
會自動釋放,不用擔心。
❺ spring 與ibatis 資料庫連接問題
給我一個最佳答案嘛。跪求了。
❻ ibatis連接資料庫的問題,高分求解決!!!!!
錯誤初始化的TransactionManager 。不能實例TransactionConfig 。問題在配置文件中,如果用到Spring的話在Spring中配置的事務管理器,如果有配置數據源的話在檢查一下,往回推!
❼ 請教ibatis的DBCP連接池和tomcat6的優化問題
我用的線程寬派池是java1。5自帶的concurrent包,資料庫連接池是commons-dbcp-1.2.jar 問題補充:我用的是ibatis,資料庫連接是由框架管理世旦的。執行完自動close。初步結論是因慎返賀為線程池的原因。以前有同事就遇到過在負載情況下dbcp無法釋放連接的bug
❽ Hibernate與IBatis的優缺點及可行性分析
優點
簡單
易於學習 易於使用 通過文檔和源代碼 可以比較完全的掌握它的設計思路和實現
實用
提供了數據映射功能 提供了對底層數據訪問的封裝(例如) 提供了框架 可以使我們更容易的開發和配置我們的dal層
靈活
通過sql基本上可以實現我們不使用數據訪問框架可以實現的所有功能 或許更多
功能完整
嘩檔提供了連接管理 緩存支持 線程支持 (分布式)事物管理 通過配置作關系對象映射等數據訪問層需要解決的問題 提供了支持 並在框架中封裝了 Hibernate和datamapper 增強系統的可維護性 通過提供dal層 將業務邏輯和數據訪問邏輯分離 使系統的設計更清晰 更易維護 更易單元測試 sql和代碼的分離 提高了可維護性
缺點
滯後性
還沒有明確對 net 的支持 最新版本在 下編譯可以 但有些單元測試不能通過
不成熟 工程實踐較少 ibatisnet在實際項目中的使用較少 只是理論上可行
半orm 工具支持較少 需要我們自己寫sql 並且 net下還未發現可以自動生成業務層類和配置文件的工具 這點和Hibernate不一樣 Hibernate會為我們的資料庫直接產生sql 並有一些輔助工具 因此使用ibatis比Hibernate要多做一些工作
可行性
沒有最好的框架 只有最適合的框架 存在的便是合理的 它存在就說明有它存在的道理 但它未必為我們存在 所以選擇一個框架最主要的是看它對你有沒有意義 意義有多大 是不是比其他框架帶給 你的好處要多 沒有絕對的優點也沒有絕對的缺點 重要的是看在什麼情況下討論
上面說了部分的ibatis的優點和部分缺點 這些優點從理論上證明ibatis對任何數據持久層都合適 但未必是最好的選擇 下面對上面的優缺亂亮亂點分別從兩方面討論
簡單
我們都喜歡簡單 簡單意味著學習成本低 使用中出錯的可能性低 同時 簡單的東西一般來說功能不夠強大 反過來 復雜的東西學習成本高 用起來不方便 並且團隊沒有很強的技術實力 一般不要使用
實用
解決了項目中需要解決的問題 這是任何實際工程中採用的框架和工具都應具有的性質 否則就不要拿到實際項目中來
靈活
靈活有兩層意思 一種是簡單易擴展 另一種是功能強大提供了很多選項 ibatis屬於鍵基前者 Hibernate屬於後者 兩者各有優缺點
功能完整
ibatis的功能完整也是相對的 比我們自己開發的框架應該完整 但對比其他框架肯定也有一些解決不了的問題
增強系統的可維護性 利用ibatis可以做到sql和代碼分離 可以設計出一個清晰的數據訪問層(dal) 但項目架構是否科學合理 是否以維護 關鍵不在ibatis 因 為它只是一個數據層框架 但是我們也不得不清楚 要想發揮ibatis的優勢 我們需要做一些額外工作 比如最好設計介面 需要將業務層實體和對實 體的訪問放在不同的工程中 同時需要維護xml配置文件
滯後性
ibatis組現在還沒有提到要支持 net 很多人在 net 下使用ibatis都出現了問題 所以如果要使用 net 開發 ibatis不是一個好選擇 還需要等待
不成熟
開源的東西很難說成熟 但一般比我們自己寫的框架要成熟 由於我們可以拿到他的源代碼 所以關鍵在於我們能否駕馭它
半orm 工具支持少
這註定了ibatis不能從本質上提升開發效率 我們需要自己寫sql 寫實體類 寫配置文件 但這也是它優越的地方 它沒有為我們做的他多 所以我們就 有更多的施展空間 而且它非常適合那些並不能完全控制資料庫的系統和需要利用資料庫本身提供的高級特性的統計查詢系統的開發
使用ibatis需要自己寫sql 由於我們的sql不可能完全符合sql標准 比起Hibernate產生的sql來 可移植性差 不過由於我們更改 資料庫的可能性較小 對我們來說sql符合標准以便可以在遷移到不同伺服器時代價最小並不是十分必要的 另一方面 Hibernate雖然可以屏蔽很多 資料庫間的不同 但是卻很難利用某些資料庫的高級特性 比如oracle的分析統計函數
Hibernate不適合資料庫模式不規范 約束不完整 需要大量復雜查詢的系統 同時Hibernate的學習成本較高 完全掌握Hibernate也較困難 風險較大
自己寫框架未必比ibatis的好 穩定 強大和可擴展 而且自己開發框架也需要較大的工作量
如果使用dotnet並且要選一個數據層框架 而系統中有相當一部分較復雜的sql 或資料庫設計不合理 臟數據多 對性能和資源要求嚴格 ibatis 是一個比較不錯的選擇 他的那些缺點並不是致命的 而且也是有一些解決方案的 尤其是 當選用了ibatis的dataaccess作為框架時 我 們可以同時使用Hibernate 和datamapper(ibatisnet的核心組件) 那樣將會使風險降到最低 並且整個系統的 框架比較合理
另外 利用ibatis可以統一編碼風格 節約開發成本 大家不會再把精力浪費到分頁 連接池 主鍵生成等地方了 可以集中精力進行業務組件的編寫
綜上 很多時候我們要在是自己開發框架和選用第三方框架和選用什麼樣的框架問題上進行綜合考慮 考慮的標准當然是項目的當前情況和我們希望達到目的的一個平衡
ibatis只是封裝了數據訪問層 替我們做了部分的對象關系映射 但我們的代價是必須要寫xml配置文件 相對於Hibernate我們還要寫很多 sql Hibernate通過工具直接從資料庫模式生成實體類和基本的配置文件 而且大部分情況下不需要我們寫sql 會較大的提升開發效率 但這些也 有很多的局限性 尤其是對環境的要求較高(資料庫設計 對象設計 團隊的協作等)
個人感覺ibatis對項目比較有意義的地方在於它小巧靈活 可擴展 封裝了數據訪問層(事務 緩存 異常 日誌) 並提供了框架支持
利用ibatis我們可以做到代碼和sql的分離 只要sql能夠解決的問題 ibatis就能幫我們較容易的解決 同時也使我們的項目對某一框架的依賴 性變小(因為ibatis是非侵入性的) 這將極大的降低項目風險 減少解決復雜問題的時間 使項目的維護變得簡單
ibatis對於應用的修改 調試 擴充和維護將會變得容易自然 修改時 我們主要修改的是代表模型的實體對象 xml配置文件中的sql 和/或配置文 件的resultmap(很多時候是不需要的) 同時 sql和代碼分離 我們不用在代碼的stringbuffer的append方法之間尋找需要修改 的sql 配置文件中的sql便利了我們的調試和對sql的評審及以後的sql重用
利用一些框架在前期一般會拖慢開發效率 因為我們需要付出學習成本 很多時候 使用框架需要寫很多配置文件 在使用不熟時開發速度較慢 同時利用框架往往 使系統代碼量增大 比如model 和model 模型 開發效率應該還是model 快 四層的架構肯定比兩層的代碼量大 但對於中後期開發和維護將會極大的提高效率
利用一些較完全的開發框架和代碼生成工具 在前期會較大的提高開發效率 但在後期常常會拖慢進度 並有可能成為以後維護的夢魘 比如torque生成實體類和其對應的sql 雖大幅提高了效率 但修改負擔較大
比較理想的開發方式是使用簡單框架結合簡單的代碼生成工具 框架提供系統的基礎服務 並規范開發 框架一方面提供了開發中某一方面的開發基礎支持 比如數 據訪問層 事務 日誌 公用類 異常等 另一方面 也為開發定義了模式 定義了系統的基本輪廓 同時 通過簡單的代碼生成工具生成部分低級的代碼 比如通 過工具從資料庫模式生成實體類 這些類生成後我們可以自由修改
Hibernate是十分強大 比較完善的orm框架 不過這是它的優點也是它的缺點 J EE系統是否採用Hibernate 是一個需要認真評估的問題
要想Hibernate工作的好 資料庫的設計必須好 同時對於復雜的數據操作同時需要使用sql Hibernate 對於直接使用sql的支持比Hibernate 要自然 這一點是可以接受的
Hibernate比較復雜 功能強大而靈活 要用好Hibernate確實不是很簡單 當然spring框架提供了對Hibernate的封裝 使Hibernate的使用變得簡單了點
lishixin/Article/program/Java/ky/201311/28363
❾ 請教IBATIS連接池問題
資料庫的連接池只需要驅動程序、連接串、資料庫用戶名與口令,它只負責資料庫連接的管理,不論誰來取它只要有就給,並負責連帶陵櫻接的回收復用
終端用蠢叢戶汪敗只存在業務意義,由業務系統負責許可權管理,根據業務來決定是否操作資料庫的數據,也就是根據業務來決定是否需要從連接池中取資料庫連接
❿ struts2 spring ibatIS 框架設計的平台,資料庫中目前有大概4000萬的數據,目前的查詢效率非常的慢。
只能做個折中,考慮對簡訊做最近3個月查詢。慎鋒3個月外放在另外一個表(或者另外一台伺服器)。賣改基本上查詢也就集中在前幾個月了。這樣數據就少了寬配晌。數據多怎麼查怎麼索引都是慢的