项目采用的是Struts2+Spring+Hibernate 搭建的,现在遇到了一个问题,在一个需要向数据库中插入一实体信息的功能中,在页面输入输入实体的信息,提交后在Action中调用业务层的方法,然后业务层再调用Dao层方法向数据库中插入数据,现在是执行完后数据库中没有插入信息,也没有报错。而在测试类中通过如下方法

ApplicationContext ctx = new ClassPathXmlApplicationContext(
        "spring/applicationContext*.xml");
IServiceMgrBiz serviceMgrBiz = (IServiceMgrBiz)ctx.getBean("serviceMgrBiz");
Service service = new Service();
service.setServiceName("基础数据");
service.setServiceDescription("基础数据");
serviceMgrBiz.serviceRegister(service);

这样直接调用却可以插入今数据库,请问这是什么原因呢?


1个回答

如果在Action能获取到IServiceMgrBiz的实例,插入信息不成功有可能就是事务的问题。

业务层IServiceMgrBiz需要让Spring管理。

业务层IServiceMgrBiz的serviceRegister()方法需要Spring提供的事务。