2020久久超碰欧美精品最新亚洲欧美日韩久久精品,国产福利电影一区二区三区,亚洲欧美日韩一区在线观看,亚洲国产欧美日韩欧美特级,亚洲欧美日韩成人一区久久,欧美日韩精品一区二区三区不卡,国产欧美日韩va另类影音先锋,亚洲欧美日韩久久精品,亚洲欧美日韩国产成人精品影院,亚洲国产欧美日韩精品一区二区三区,欧美日韩国产成人高清视频,日韩久久精品国产免费观看频道,久久人人爽人人爽从片av高清,国产精品综合一区二区

首頁常見問題正文

SSH框架整合:測試事務只讀方法

更新時間:2024-02-20 來源:黑馬程序員 瀏覽量:

IT培訓班

  在Spring的事務管理配置信息中,只有find*方法是只讀的,因此要驗證事務的只讀方法是否生效,可以在Dao和Service中編寫一個findById()方法,并在Service中增加保存Person對象的操作。如果事務控制成功,則保存操作會失敗。下面就按照此種方式測試事務的只讀操作。

  1.實現Dao

  (1)編寫Dao層接口方法。在PersonDao接口中,增加一個根據id查詢數據的方法findByid(),其方法代碼如下所示:

//根據id查詢
public Person findById(String id);

  (2)編寫DAO層實現類方法。在其實現類PersonDaoImpl中實現該方法,其代碼如下所示。

public Person findById(String id) {
    return getHibernateTemplate().get(Person.class, id);
}

  2.實現Service

  (1)編寫Service層接口方法。在接口PersonService中,創建一個名稱為findById的方法,其方法如下所示:

//根據id查詢
public Person findById(String id);

  (2)編寫Service層實現類方法。在PersonService的實現類PersonServiceImpl中實現findById()方法,其代碼如下所示:

public Person findById(String id) {
    save(new Person("test"));
    return personDao.findById(id);
}

  在上述方法代碼中,首先保存并創建了一個名稱為test的對象,然后返回PersonDao中使用findById()方法查詢的信息。

  3.編寫測試方法并查看運行結果

  在測試類TestMerge中,創建一個名稱為testReadOnlyTransaction的方法,使用該方法測試只讀事務操作,其代碼如下所示:

@Test
public void testReadOnlyTransaction() {
    PersonService ts=(PersonService)ctx.getBean("personService");
    //在只讀方法中,進行新增操作,如果事務控制成功,則新增失敗
    Person p=ts.findById("2c90ab9157feel3c0157feel3cbb0000");
    System.err.println("人員名稱為:"+p.getName());
}

  在上述代碼中,獲取了PersonService實例后,調用了實例中的findById()方法(方法中的id值是從數據庫中獲取的),而在該方法中,故意新增了一個person對象,即執行寫數據,如果只讀事務起效,那么會報出事務異常,新增的person也將失敗。

  本文版權歸黑馬程序員Java培訓學院所有,歡迎轉載,轉載請注明作者出處。謝謝!

  作者:黑馬程序員Java培訓學院

  首發:https://java.itheima.com

分享到:
在線咨詢 我要報名
和我們在線交談!