三大框架湯陽光spring2.5課程_第1頁
三大框架湯陽光spring2.5課程_第2頁
三大框架湯陽光spring2.5課程_第3頁
三大框架湯陽光spring2.5課程_第4頁
三大框架湯陽光spring2.5課程_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

數(shù)據(jù)Spring+JDBC組合開準(zhǔn)備測(cè)試用的數(shù)據(jù)庫與createdatabaseidINTEGERUNSIGNEDNOTNULLAUTO_INCREMENT,nameVARCHAR(45),ageINTEGERUNSIGNED,PRIMARYKEY(`id`))配置數(shù)據(jù)源c3p0c3p0的jar包添加到工程中。我們?cè)谂渲脮r(shí)把數(shù)據(jù)庫連接信perties文件中。使用外部的properties ceholderlocation="classpath:perties"定義c3p0<beanid="dataSource" boPooledDataSource"><propertyname="jdbcUrl"<propertyname="driverClass"<propertyname="user"<propertyname="password"<!--初始化時(shí)獲取三個(gè)連接,取值應(yīng)在minPoolSize與maxPoolSize之間。Default3<propertyname="initialPoolSize"<!--連接池中保留的最小連接數(shù)。Default3<propertyname="minPoolSize"<!--連接池中保留的最大連接數(shù)。Default15<propertyname="maxPoolSize"<!--當(dāng)連接池中的連接耗盡的時(shí)候c3p0一次同時(shí)獲取的連接數(shù)。Default3<propertyname="acquireIncrement"<!--最大空閑時(shí)間,1800秒內(nèi)未使用則連接被丟棄,若為0則永不丟棄。Default0<propertyname="maxIdleTime"jdbcUrljdbcUrl=jdbc:mysql://localhost:3306/jdbcdriverClass=com.mysql.jdbc.Driverusername=rootpassword=配置 <!--<!--定義 te--<bean te" <propertyname="dataSource" teexecute(..)方publicpublicvoidaddUser(finalUseruser) te.execute(newConnectionCallback()public nConnection(ConnectionthrowsSQLException, ceptionStringsql="insertintot_user(name,age)values(?,?)";PreparedStatementps=con.prepareStatement(sql);ps.setString(1,user.getName());ps.setInt(2,user.getAge());return}}使用 te做增刪改操insertpublicvoidaddUser(finalUseruser) te.update("insertintot_user(name,age)newObject[user.getName()user.getAge(有null}updatepublicvoidupdateUser(Useruser) te.update("updatet_usersetname=?,age=?whereid=?",newObject[]{user.getName(),user.getAge(),user.getId()}deletepublicvoiddeleteUser(Integerid) te.update("deletefromt_userwhereid=?",newObject[]{id} 使用 te做查詢操publicUserqueryById(finalIntegerid)Stringsql="selectname,agefromt_userwherereturn te.queryForObject(sql,newObject[]{id},new{publicObjectmapRow(ResultSetrs,introwNum)throwsSQLException{Stringname=rs.getString("name");intage=returnnewUser(id,name,}}publicList<User>queryAll()Stringsql="selectid,name,agefromreturn te.query(sql,newRowMapper()publicObjectmapRow(ResultSetrs,introwNum)throwsSQLException{Integerid=rs.getInt(1);Stringname=rs.getString(2);Integerage=rs.getInt(3);returnnewUser(id,name,age);}}publicintqueryCount()Stringsql="selectcount(*)fromreturn 事務(wù)管事務(wù)的此過程種出現(xiàn)了差錯(cuò),比一條SQL語句沒有執(zhí)行成功,那么這一組操作都將全部回僅用四個(gè)詞解釋事務(wù)Isolate(性):用戶間操作不相數(shù)據(jù)庫系統(tǒng)的四種事務(wù)級(jí)允許在并發(fā)事務(wù)已經(jīng)提交后??煞乐古K讀,但幻讀和不對(duì)相同字段的多次是一致的除非數(shù)據(jù)被事務(wù)本身改變完全服從ACID的級(jí)別,確保不發(fā)生臟、幻、不可重復(fù)讀這在所有的級(jí)別中是最慢的,它是典型的通過完全鎖定在 ReadCommited:讀已提交數(shù)據(jù)(會(huì)出現(xiàn)不可重復(fù)讀和幻讀RepeatableRead:可重復(fù)讀(會(huì)出現(xiàn)幻讀臟讀不可重復(fù)讀到另一事務(wù)已提交的更新數(shù)據(jù)。相反,“可重復(fù)讀”在同一事務(wù)中多次數(shù)據(jù)時(shí),能夠保證幻讀不同的級(jí)別采用不同的鎖類型來實(shí)現(xiàn),在四種級(jí)別中,Serializable的 mited的級(jí)別最低。大多數(shù)據(jù)庫默認(rèn)的級(jí)別為ReadCommited,如當(dāng)然也有少部分?jǐn)?shù)據(jù)庫默認(rèn)的級(jí)別為Repeatable_Read,如Oracle數(shù)據(jù)庫支持READCOMMITTED和SERIALIZABLE兩種事務(wù)性級(jí)別,不支持READMITTED和REPEATABLEREAD這兩種性級(jí)別。雖然SQL標(biāo)準(zhǔn)定義的默認(rèn)事務(wù)性級(jí)別是SERIALIZABLE,但是Oracle數(shù)據(jù)庫默認(rèn)使用的事務(wù)性READCOMMITTED.標(biāo)準(zhǔn)中定義4種,MySQL支持4種,Oracle2種。默認(rèn)值也不一樣Spring對(duì)事務(wù)管理的支Spring提供了兩種事務(wù)管理方式:你可以通過程序代碼來控制你的事務(wù)何時(shí)開始,何時(shí)結(jié)束等,與后面介紹的式事務(wù)管理式事務(wù)管理如果你并不需要細(xì)粒度的事務(wù)控制,你可以使用式事務(wù),在g中,你只需要gg件中移除該設(shè)置如果使用Spring,我們就不再需要手工控制事務(wù)事務(wù)規(guī)則(行為行意(默認(rèn)值如果沒有活動(dòng)事務(wù),則按REQUIRED屬性執(zhí)行.它使用了一個(gè)單獨(dú)的事務(wù),DataSourceTransactionManager事務(wù)事務(wù)管在單一的ce中的管理當(dāng)持久化機(jī) e當(dāng)持久化機(jī)制是Jdo使用一個(gè)JTA實(shí)現(xiàn)來管理事務(wù)。在一個(gè)事務(wù)多個(gè)資源時(shí)必須使當(dāng)ojb用作持久化機(jī)制式事務(wù)管理——基于XML配<<beansxmlns=""""""1,配置事務(wù)管理器(應(yīng)根據(jù)情況使用合適的事務(wù)管理器)<beanid="transactionManager"<propertyname="dataSource"2,配置管理事務(wù)的“通知<tx:adviceid="txAdvice"transaction-指定所有以add,delete,update開頭的方法都使用事務(wù),默認(rèn)read-only="false"--><tx:methodname="add*"<tx:methodname="delete*"<tx:methodname="update*"指定所有以query<tx:methodname="query*"read-only="true"3<!--指 所有Dao中的方法--<aop:advisoradvice-ref="txAdvice"pointcut="execution(*<tx:adviceid="txAdvice"transaction-<!--thetransactionalsemantics...--<!--allmethodsstartingwith'get'areread-only--<tx:methodname="get*"read-<!--othermethodsusethedefaulttransactionsettings(seebelow)--<tx:method1.2.7.式事務(wù)管理——基于注解配////publicvoidaddUser(finalUseruser) te.update("insertintot_user(name,age)newObject[]{user.getName(),user.getAge()}//@Transactional(readOnly=publicintqueryCount()Stringsql="selectcount(*)fromreturn }方法的事務(wù)設(shè)置將被優(yōu)先執(zhí)行。例如:UserServiceImpl類在類的級(jí)別上被注解為只@Transactional注解可以被繼承,即:在父類上了這個(gè)注解,則子類中的所Hibernate3整分別添加Hibernate3Spring的開發(fā)環(huán)Spring中配置配置SessionFactory<beanid="sessionFactory"<propertyname="configLocation"<property<bean <propertyname="jdbcUrl"<propertyname="driverClass"<propertyname="user"<propertyname="password"<propertyname="initialPoolSize"<propertyname="maxPoolSize"<propertyname="minPoolSize"<propertyname="acquireIncrement"<propertyname="maxIdleTime"在Spring中配置式事務(wù)管自動(dòng)掃描與裝配bean ponent-scanbase-<!--對(duì)象<beanid="transactionManager"<propertyname="sessionFactory"<tx:annotation-driventransaction-manager="transactionManager"方法一:使用 <!--<!--配置 te--<bean <propertyname="sessionFactory"略方法二:使用注入的SessionFactory(推薦//在類上 publicclassUserDaoImplimplementsUserDao注入sessionFactoryprivateSessionFactory//publicvoidsave(Useruser){}//publicvoiddelete(Longid)Objectobj=getSession().get(User.class,}////@Tran

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論