实在有些晕了,关于领域模型和ORM的关系

08-05-22 cscs31
                   

这几天对领域模型有了些认识,也拜读了一些文章和书籍,但是有个实际的问题不太知道应该怎么设计?

类似于Hibernate这种ORM得到的Object是不是可以作为领域模型中的实体模型?这个Mapping出来的object是属于哪一层?

还是领域模型中的实体模型是一层,ORM的结果出来的Object是另一个层次?这两层之间再做映射?

谢谢大家!谢谢Banq了

[该贴被cscs31于2008-05-22 22:12修改过]

                   

1
banq
2008-05-26 11:10

>类似于Hibernate这种ORM得到的Object

首先这个问题本身就有问题,Object不是Hibernate这种ORM得到的输出结果,而是它的输入,是ORM得到DB,不是ORM得到Object。

领域模型 ---> ORM -----> DB

freebox
2008-05-26 12:04

楼上正解,如果在改造遗留系统,即使有了ORM工具,仍然很难通过简单的反向工程取得有价值的领域对象。

我个人认为Hibernate这样的工具有用之处有两个,第一个是强调O,而不是R或M,要不咋不叫ROM,第二个是缓存。

cscs31
2008-05-26 17:01

先感谢banq的回复:)

明白banq的意思,确实是先有的object,那么这个Object可以做为Hibernate的输入类?

一个新想到的问题,在hibernate中支持两种Mapping的模式,一种是Annotation的方式和xml配置的方式,我个人觉得如果第一个问题成立,是不是应该使用xml配置的方式,我感觉Annotation的方式好像把业务领域模型和ORM混在一起了。

是否正确,还请banq指教。

[该贴被cscs31于2008-05-26 17:03修改过]

freebox
2008-05-26 17:40

我认为Annotation只是形式,定义好的Entity在去掉这些注释之后仍然是有价值的,Annotation方便了开发,您可以在结束时换回hbm。

但我看不出使用Annotation有什么不好。即使有侵入也是在注释级别的,在类属性和关联关系方面和hbm没有什么差别。碰到不需要持久的东西也可以用@Transient(拼错没有?)注释。

2Go 1 2 下一页