更新时间:2024-01-05 来源:黑马程序员 浏览量:
在Spring的事务管理配置信息中,只有find*方法是只读的,因此要验证事务的只读方法是否生效,可以在Dao和Service中编写一个findByld()方法,并在Service中增加保存Person对象的操作。如果事务控制成功,则保存操作会失败。下面就按照此种方式测试事务的只读操作。
(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); }
(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()方法查询的信息。
在测试类TestMerge中,创建一个名称为testReadOnlyTransaction的方法,使用该方法测试只读事务操作,其代码如下所示:
@Test public void testReadOnlyTransaction() { PersonService ts=(PersonService)ctx.getBean("personService"); //在只读方法中,进行新增操作,如果事务控制成功,则新增失败 Person p=ts.findById("2c90ab9157fee13c0157feel13cbb0000"); System.err.println("人员名称为:"+p.getName()); }
在上述代码中,获取了PersonService实例后,调用了实例中的findById()方法(方法中的id值是从数据库中获取的),而在该方法中,故意新增了一个person对象,即执行写数据,如果只读事务起效,那么会报出事务异常,新增的person也将失败。
本文版权归黑马程序员Java培训学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:黑马程序员Java培训学院
【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19【AI大模型开发-Python】毕业33个工作日,就业率已达到94.55%,班均薪资20763元
2025-09-19【AI智能应用开发-Java】毕业5个工作日就业率98.18%,最高薪资 17.5k*13薪,全班平均薪资9244元
2025-09-19