Hibernate实现数据库CRUD的操作即增Create、查Retrieve、改Update、删Delete,分别对应save、get或load、update、delete方法。所以,PersonDaoSessionImpl.java实现删除数据库记录,可以想象得到就是sessionFactory.getCurrentSession().delete(person);语句。
@Override public int delete(Person person) throws Exception { sessionFactory.getCurrentSession().delete(person); return 1; }
在PersonService.java中也要增加接口方法delete,同时在PersonServiceImpl.java中实现这个接口方法。
public void delete(Person person) throws Exception;
@Override public void delete(Person person) throws Exception { personDao.delete(person); }
SpringMVC的PersonController.java中也要增加按iD删除记录的方法delete。删除之前,需要查询下这个ID的记录是否存在,如果存在才去删除。删除之后,直接使用response.getWriter().print("delete done!");在页面打印结果即可。
@RequestMapping(value = "/delete")
public Object delete(HttpServletRequest request, HttpServletResponse response, PersonForm personForm) throws IOException {
try {
String id = personForm.getId();
Person person = personService.findPerson(id);
if(person!= null) {
personService.delete(person);
}
} catch (Exception e) {
e.printStackTrace();
}
response.getWriter().print("delete done!"); response.getWriter().flush();
return null;
}
可以创建一个deleteForm.jsp页面,使用表单将ID传给PersonController的delete方法,就可以把数据库的相应ID记录删除了。
在提交表单删除过程中,如果还出现org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread,应该知道是Session未开启,需要在applicationContext.xml中添加txAdvice的tx:method name="delete*" propagation="REQUIRED"配置。