使用hibernate4 + spring3 mvc,事务不提交是怎么回事

2025-05-09 17:06:48
推荐回答(1个)
回答1:

一、配置如下:
1)applicationContext-common.xml
Java代码






destroy-method="close">













class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">



org.hibernate.dialect.MySQLDialect
true
true
50
20




WEB-INF/classes/pojo/*.hbm.xml

















PROPAGATION_SUPPORTS,readOnly
PROPAGATION_REQUIRED,readOnly
PROPAGATION_REQUIRED
PROPAGATION_REQUIRED
PROPAGATION_REQUIRED











2、spring-servlet.xml
Java代码 收藏代码








class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/view/" p:suffix=".jsp" />

class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
p:defaultEncoding="utf-8" />







class="org.springframework.orm.hibernate4.support.OpenSessionInViewInterceptor">

















二、相关代码如下:

1)action中的删除操作

Java代码
/**
* 删除记录
*
* @param id
*/
@RequestMapping(value = "log_delete")
public String delete(HttpServletRequest request, Long id) {

if (id != null) {

Eq.println("============^_^=============执行删除操作,id=" + id);
logService.delete(id);
Eq.println("============^_^=============操作执行结束=======");
}

Eq.println("**********地址来源=" + Eq.getReferer(request));

return "redirect:log_list";

}

2)service中的删除操作

Java代码 收藏代码
/**
* 根据主键删除实体
*/
@Override
public void delete(Long id) {

dao.delete(Log.class, id);
//dao.flush();

}

3)dao中的删除操作

Java代码 收藏代码
public boolean delete(final Class clazz, final Long id) {

Assert.notNull(id, "id不能为空");

try {

getSession().delete(getSession().load(clazz, id));

logger.debug("delete entity {},id is {}", clazz.getSimpleName(), id);

return true;

} catch (Exception e) {

e.printStackTrace();

return false;

}

}