当数据库两个表是多对多关联关系的时候,维护者应该是数据量较少的一方。
即维护者inverse=false,被维护者inverse = true。
级联关系建议都是cascade= save-update。
下面代码中,Project负责维护Employee的更新。
删除维护者的时候可以直接delete。
<span style="color:#993399;"> Transaction tx = null; Session session = HibernateSessionFactory.getSessionFactory().getCurrentSession(); tx = session.beginTransaction(); </span><pre name="code" class="java"><span style="font-size:18px;"><span style="color:#993399;"><span style="color:#009900;"></span></span></span><pre name="code" class="java"> Project project= session.get(Project.class,id); session.delete(project); tx.commit();
删除被维护者的时候,需要逐个解除实体表与联系表的关系,即解除外键约束,
<span style="font-size:18px;"> <span style="color:#993399;">Transaction tx = null; Session session = HibernateSessionFactory.getSessionFactory().getCurrentSession(); tx = session.beginTransaction(); Employee employee = session.get(Employee.class,id); <span style="color:#009900;">Set<Project>projects = employee.getProjects(); for(Project project : projects){ project.getEmployees().remove(employee); }</span> session.delete(employee); tx.commit(); </span> </span>