首页 > 模型关联太多,如何分离做到单一化

模型关联太多,如何分离做到单一化

1.在做系统时,才有Hibernate结合开发时,经常遇到模型关联很多,导致后面处理业务逻辑大量的判断和感觉重复的代码,如何将,模型关联分离,做到单一化的职责,减少系统关联,优化系统呢?
2.关联关系如 用户与很多模型关联等


你这个问题好大,简单来说就是搞清楚Model和Model之间的关系,有三个维度

  1. “引用关系”还是“拥有关系”。如果A拥有B,那么A删除的时候B也要跟着删除。如果A引用B,那么A删除了B不用跟着删除。这个根据业务来判断。

  2. 单项还是双向。这个根据业务来,你自己判断,不过要记住一点,在“引用关系”下,尽量保持单向。在“拥有关系”下,双向是可以的。

  3. 一对一、一对多、多对一、多对多。这个不多讲了,不过有一点要注意,尽量避免多对多,如果用了多对多多问问自己是否一定要这么干。

如果一定要问有什么方法论,可以看看DDD(Domain Driven Design)里的聚合根(Aggregate Root)概念。


终于可以来吐槽一下了,对于已经长时间不再使用 ORM 的人来表达一下我的看法。

经常看到写 Java 后端的人,写了一大堆模型对象,各种继承和组合都用上了,如 @chanjarster 所说的,一对一,一对多,多对多,单项双向的,直接绕晕了...

其实个人觉得 ORM 是一个很糟糕的发明,ORM 唯一的好处就是不用考虑 SQL,简直哭晕,SQL 是一个多么好的东西,现在对于大部分的 Java 程序员来说,写个 SQL 应该不是大问题,比在这里去背各种对象映射规则简单多了...

总结一下ORM 的缺点

  1. 性能不高,即使有成熟的框架,有的时候我只要访问一个属性,还是装载了整个对象的数据。(PS:可能可以配置,那学习成本也很高)

  2. 不够灵活,很多业务需求,都是需要连表查,调用函数,存储过程...

  3. 抽象太麻烦,直接绕晕了

综上,如果你认可的话,那就放弃 ORM

替代方案:

  1. 使用 MyBaits 直接写 SQL,灵活控制

  2. 使用 NOSQL 数据库,把对象转换为 JSON 数据,可以直接存储,如 MongoDb

【热门文章】
【热门文章】