Java自学之路-Java中级教程-35:Hibernate删除数据库记录的方法delete

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"配置。


猜你喜欢

转载自blog.csdn.net/weixin_41239710/article/details/80821862