关于领域模型与数据库

08-08-23 yongbuyanbai
当我们分析设计一个系统的时候,可以完全的抛开数据库约束,而采用完全OO的思想去设计领域模型以及他们之间的关系,不用考虑持久化的问题,但是设计后必然要对对象进行持久化,所以必然与关系数据库打交道, 这也可以通过基础框架如HIBERNATE完成,但是我有个疑问,这里的领域模型最终是要持久化到数据库中,他们必然存在某中联系,尽管数据库仅仅是被用做对象的冬眠而已,没有任何其他的价值。如果需求变动,领域模型需要改动,那么数据库是否也需要改动,如果其中一方的变动会引起另一方的变动,那么这种分离开领域模型和数据库的方式是否合适,如果领域模型的改动不会影响数据库,那么依据是什么?请banq和各位道友谈谈各自的想法!
              

banq
2008-08-24 10:31
>果其中一方的变动会引起另一方的变动,那么这种分离开领域模型和数据库的方式是否合适

是会变动,通过Hibernate的映射配置,Hibernate在部署到JavaEE服务器中时,会自动更新数据表结构。

yongbuyanbai
2008-08-24 11:37
意思是说,如果领域模型中的实体如果发生了变化,比如增加一个字段或者减少字段,都而修改对应的hibernate配置文件,这样hibernate就可以把数据库对应的表中增加一个字段或者减少一个字段吗?

我在看hibernate的时候真没看到过,还有这样自动的功能吗?

yongbuyanbai
2008-08-24 11:50
一般的开发是不是在领域建模之后确定了实体,值对象和服务以后,需要持久化的时候通过hibernate的自动生成方式,也就是在配置文件中指定<property name="hbm2ddl.auto">create</property>来进行的,这样也就是说通过基础架构hibernate完成了数据库的创建操作,我们始终都是关注的是领域,而不是数据库,所以完全不用理会表的创建工作?

freebox
2008-08-24 16:36
会自动增加,不会删除字段。一般是用update,特别是在运行了一阶段的程序当中,已经存在大量数据了。

所以说模型一定要设计得尽量符合他们的要求,要把当前的需求弄清楚些,否则一旦部署并应用一段时间,再做大规模的变更会有很多影响。

猜你喜欢