更新時(shí)間:2024-02-20 來(lái)源:黑馬程序員 瀏覽量:
IT就到黑馬程序員.gif)
在Spring的事務(wù)管理配置信息中,只有find*方法是只讀的,因此要驗(yàn)證事務(wù)的只讀方法是否生效,可以在Dao和Service中編寫(xiě)一個(gè)findById()方法,并在Service中增加保存Person對(duì)象的操作。如果事務(wù)控制成功,則保存操作會(huì)失敗。下面就按照此種方式測(cè)試事務(wù)的只讀操作。
(1)編寫(xiě)Dao層接口方法。在PersonDao接口中,增加一個(gè)根據(jù)id查詢(xún)數(shù)據(jù)的方法findByid(),其方法代碼如下所示:
//根據(jù)id查詢(xún) public Person findById(String id);
(2)編寫(xiě)DAO層實(shí)現(xiàn)類(lèi)方法。在其實(shí)現(xiàn)類(lèi)PersonDaoImpl中實(shí)現(xiàn)該方法,其代碼如下所示。
public Person findById(String id) {
return getHibernateTemplate().get(Person.class, id);
} (1)編寫(xiě)Service層接口方法。在接口PersonService中,創(chuàng)建一個(gè)名稱(chēng)為findById的方法,其方法如下所示:
//根據(jù)id查詢(xún) public Person findById(String id);
(2)編寫(xiě)Service層實(shí)現(xiàn)類(lèi)方法。在PersonService的實(shí)現(xiàn)類(lèi)PersonServiceImpl中實(shí)現(xiàn)findById()方法,其代碼如下所示:
public Person findById(String id) {
save(new Person("test"));
return personDao.findById(id);
}在上述方法代碼中,首先保存并創(chuàng)建了一個(gè)名稱(chēng)為test的對(duì)象,然后返回PersonDao中使用findById()方法查詢(xún)的信息。
在測(cè)試類(lèi)TestMerge中,創(chuàng)建一個(gè)名稱(chēng)為testReadOnlyTransaction的方法,使用該方法測(cè)試只讀事務(wù)操作,其代碼如下所示:
@Test
public void testReadOnlyTransaction() {
PersonService ts=(PersonService)ctx.getBean("personService");
//在只讀方法中,進(jìn)行新增操作,如果事務(wù)控制成功,則新增失敗
Person p=ts.findById("2c90ab9157feel3c0157feel3cbb0000");
System.err.println("人員名稱(chēng)為:"+p.getName());
}在上述代碼中,獲取了PersonService實(shí)例后,調(diào)用了實(shí)例中的findById()方法(方法中的id值是從數(shù)據(jù)庫(kù)中獲取的),而在該方法中,故意新增了一個(gè)person對(duì)象,即執(zhí)行寫(xiě)數(shù)據(jù),如果只讀事務(wù)起效,那么會(huì)報(bào)出事務(wù)異常,新增的person也將失敗。
本文版權(quán)歸黑馬程序員Java培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!
作者:黑馬程序員Java培訓(xùn)學(xué)院
首發(fā):https://java.itheima.com
1024首播|39歲程序員逆襲記:不被年齡定義,AI浪潮里再迎春天
2025-10-241024程序員節(jié)丨10年同行,致敬用代碼改變世界的你
2025-10-24【AI設(shè)計(jì)】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計(jì)連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運(yùn)營(yíng)】深圳跨境電商運(yùn)營(yíng)畢業(yè)22個(gè)工作日,就業(yè)率91%+,最高薪資達(dá)13500元
2025-09-19【AI運(yùn)維】鄭州運(yùn)維1期就業(yè)班,畢業(yè)14個(gè)工作日,班級(jí)93%同學(xué)已拿到Offer, 一線(xiàn)均薪資 1W+
2025-09-19【AI鴻蒙開(kāi)發(fā)】上海校區(qū)AI鴻蒙開(kāi)發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19