java - 模型关联太多,如何分离做到单一化
天蓬老师
天蓬老师 2017-04-18 09:27:17
0
2
311
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(2)
大家讲道理

终于可以来吐槽一下了,对于已经长时间不再使用 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🎜🎜 🎜
大家讲道理

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

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

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

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!