Hibernate一对多、多对多关系级联删除时,二级缓存该如何处理?

在我的应用中菜单(Menu)这个持久化对象是组织成树形结构的,Menu与另一对象Module有对应关系,Menu与Module是多对一的,一个Module对应于多个Menu,其对应关系由Module中的menuSet维护。

在删除某个Menu对象时,其子节点应该被级联删除,这样就引出了一个问题,我如何来维护Module中的那个menuSet(这个模块对应的菜单)?假设在删除前,所有对象都已经处于二级缓存中。

我现在知道的只有两种办法:

1、清空这两个对象的二级缓存

2、笨的办法,遍历所有要删除的Menu节点,将这些节点从对应的Module.menuSet集合中删除。

另外,这种维护二级缓存的代码有没有一个优雅一点的处理办法,我现在感觉是在头痛医头脚痛医脚,哪里有这个问题,就在哪里处理。很多地方都有重复的代码。

相关推荐