数据库和领域建模

我最近看了banq对于数据库和领域建模的分析的文章。似乎有点想法。想提出自己的意见请大家看看自己的思路是否正确

比如说在一个多对多应用中 假设我们先从设计数据库表开始的话,比如有 用户 用户角色 和角色 三张表
这个时候,我用HIBERNATE影射当前表应该生成是4个PO对象和4个xml文件,这4个对象应该是 1用户PO
2用户角色PO 3用户和角色的ID对象(被用户角色PO封装) 4角色PO

那么当我们对用户进行赋角色的时候(一用户多角色) 思路是先删除用户当前拥有的角色,在增加当前对他赋的角色

忽略删除后,我们只剩下新增,那么,我们新增的对象应该是2(当前1没有级连设置) 但是 2包含3 首先我们要生成3的对象。可是 3又包括1和4 那么我们还要生成1和4的对象

这个时候1的ID是确定的,4的ID有可能是多个,根据从页面选择的值来确定,然后我们会得到许多3的对象。然后要对他进行持久化save操作。

这个就是我处理一个多对多时候基本上要做到的。

但是,我是觉得这样子特别的麻烦,要对2save。要得到3对象。得到4对象必须有1个4对象,然后在组合。然后将3的多个对象防到容器中,循环掉用save方法。

如果按照BQ所说的领域建模。可以说先从对象建立开始。建立符合需求的对象。然后影射它的表。 但是这样建立后我想问的是 到底可以简单到多少或者有什么好处,请各位大哥帮忙分析下么?

>底可以简单到多少或者有什么好处
你举的角色 用户例子不很确切,因为这部分都已经有现成的通用解决方案,不具有典型意义。使用对象分析,要有很多对象概念做支撑,否则光靠数据库那点知识基本没有用,使用对象你就当做你刚刚学习软件,以前没学过,这样,从自然对象角度来看问题,Evans DDD对这方面提出一些要则,你还需要结合设计模式 分析模式多知识来丰富你对象建模的知识,这样,具体使用时才有东西拿出来用。目前我们软件教育在这方面为零,所以,大家感觉对象就在身边,又很遥远,需要学习很多新知识。