|
这种设计有两个缺点:
1. 脱了裤子放屁,还不如直接调用bookRepository.deleteAllBooks()
2. 性能降低,获取所有的Data Book,然后调用实体中的delete方法
3. 分页删除,如果有100万Book需要全部清零,那么一定需要分多次调用findBooks获得数据实体,这会严重影响性能
各位版友有何建议?
|
假设 books 是所有书的集合,那么我们只需要books.clear()即可。把Repository看成集合,clear()或deleteAllBooks()明显是合理的,你可以把clear理解为清仓。
还有建议不要用book.delete(),“自杀”是不建议的,所谓的删除是逻辑上的从集合中移除,book自身不存在生死权,他的生死必须交由“自然”本身。
[该贴被SpeedVan于2013-01-04 01:13修改过]
在Jdonframework中是通过获取所有实体的ID后,再根据ID来删除,批量删除是Repository的一个特殊独立功能,不应该是实体自己的功能,创建和删除我一直认为不应该是实体自己的行为,对于创建,一个事物没有被创建之前不可能创建自己,这违反基本逻辑。
删除自己也不是自己来控制的,何为删除自己?对于领域模型,它是不知道有数据库仓储存在的,数据仓库中的实体是扁平的,而领域模型是立体活动的,这好比人活着和死了或休眠的关系一样。有一天如果人类技术发达,可以将人体冷冻后储存起来,千年以后再从仓储中取出复活。
删除这个词语其实隐含着数据库的概念,而不是领域模型自己的概念,所以,直接归纳为Repository仓储操作即可,是属于仓库管理命令。
还有建议不要用book.delete(),“自杀”是不建议的,所谓的删除是逻辑上的从集合中移除 ...
很多技术都是不彻底的,就如函数式,现在有多少真正的纯函数的语言?很多都是挂羊头卖狗肉,又如当时提出REST一样。
books就是Repository
试想:若果不是从books集合中移除1book,那么当这个book自杀时,books如何维护数量呢?
|
不知道这个思路能不能解决您的疑问:http://www.jdon.com/44844/5