搜索

首页  >  问答  >  正文

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

天蓬老师天蓬老师2766 天前314

全部回复(2)我来回复

  • 大家讲道理

    大家讲道理2017-04-18 09:29:17

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

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

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

    总结一下ORM 的缺点

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

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

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

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

    替代方案:

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

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

      经常看到写 Java 后端的人,写了一大堆模型对象,各种继承和组合都用上了,如 @chanjarster 所说的,一对一,一对多,多对多,单项双向的,直接绕晕了...
    其实个人觉得 ORM 是一个很糟糕的发明,ORM 唯一的好处就是不用考虑 SQL,简直哭晕,SQL 是一个多么好的东西,现在对于大部分的 Java 程序员来说,写个 SQL 应该不是大问题,比在这里去背各种对象映射规则简单多了...🎜 🎜总结一下ORM 的缺点🎜
    1. 🎜性能不高,即使有成熟的框架,有的时候我只要访问一个属性,还是装载了整个对象的数据。(PS:可能可以配置,那学习成本也很高)🎜🎜
    2. 🎜不够灵活,很多业务需求,都是需要连表查,调用函数,存储过程...🎜🎜
    3. 🎜抽象太麻烦,直接绕晕了🎜🎜 🎜 🎜综上,如果你认可的话,那就放弃 ORM 吧🎜 🎜替代方案:🎜
      1. 🎜使用 MyBaits 直接写 SQL,灵活控制🎜🎜
      2. 🎜使用 NOSQL 数据库,把对象转换为 JSON 数据,可以直接存储,如 MongoDb🎜🎜 🎜

        回复
        0
  • 大家讲道理

    大家讲道理2017-04-18 09:29:17

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

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

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

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

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

    回复
    0
  • 取消回复