1(一个业务实体):m(25个业务实体)关系在hibernate中如何考虑

07-09-15 miaoxikui
         

各位大侠
小弟有个问题是关于HIBERNATE的:
与教师teacher相关联的有
政治面貌,政治荣誉,学术荣誉 外语程度,学习简历,业务培训 配偶情况,家庭关系 军衔,警衔,职称评定,系列变动,工作经历,所在院系,照片,所带的课程等20个业务对象都是1:M的关系
难道在HIBERNATE中都要为 教师业务对象配置与之相关的其他20个业务对象吗?(配置成1:M的关系)这样的话系统会变的很慢的(一些懒加载lazy)这样一关联HIBERNATE的任务就会大大增加的。用不用配置双向的<one-to-many>关系.还是配置单一方向的<one-to-many>如果还有别的类似情况那就糟糕了·!!
还是不配置在程序中用外键来控制呢 ?

         

banq
2007-09-17 12:08

你的问题不只是HIbernate使用问题,其实分两个:
1. 需不需这些关联,这些关联设计得正确与否?这是建模设计层面
2. 这是具体技术层面,hibernate中使用双向关联性能会好,包括懒加载等,以及查询时使用二级缓存等,这些都是Hibernate技术层面得优化。

但是技术层面的10步优化都比上建模设计一步优化。

学习一下DDD,领域驱动设计,以及对象设计原则:高聚合低关联,重新设计你们这20个业务对象的之间的关联以及这些对象本身 。去除不必要的关联,除非是聚合,否则去除一般关联。