84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
欢迎选择我的课程,让我们一起见证您的进步~~
终于可以来吐槽一下了,对于已经长时间不再使用 ORM 的人来表达一下我的看法。ORM 的人来表达一下我的看法。
ORM
经常看到写 Java 后端的人,写了一大堆模型对象,各种继承和组合都用上了,如 @chanjarster 所说的,一对一,一对多,多对多,单项双向的,直接绕晕了...
Java
其实个人觉得 ORM 是一个很糟糕的发明,ORM 唯一的好处就是不用考虑 SQL,简直哭晕,SQL 是一个多么好的东西,现在对于大部分的 Java 程序员来说,写个 SQL 应该不是大问题,比在这里去背各种对象映射规则简单多了...
SQL
总结一下ORM 的缺点
性能不高,即使有成熟的框架,有的时候我只要访问一个属性,还是装载了整个对象的数据。(PS:可能可以配置,那学习成本也很高)
不够灵活,很多业务需求,都是需要连表查,调用函数,存储过程...
抽象太麻烦,直接绕晕了
综上,如果你认可的话,那就放弃 ORM 吧
替代方案:
使用 MyBaits 直接写 SQL,灵活控制
MyBaits
使用 NOSQL 数据库,把对象转换为 JSON 数据,可以直接存储,如 MongoDb
NOSQL
JSON
MongoDb
你这个问题好大,简单来说就是搞清楚Model和Model之间的关系,有三个维度
“引用关系”还是“拥有关系”。如果A拥有B,那么A删除的时候B也要跟着删除。如果A引用B,那么A删除了B不用跟着删除。这个根据业务来判断。
单项还是双向。这个根据业务来,你自己判断,不过要记住一点,在“引用关系”下,尽量保持单向。在“拥有关系”下,双向是可以的。
一对一、一对多、多对一、多对多。这个不多讲了,不过有一点要注意,尽量避免多对多,如果用了多对多多问问自己是否一定要这么干。
如果一定要问有什么方法论,可以看看DDD(Domain Driven Design)里的聚合根(Aggregate Root)概念。
终于可以来吐槽一下了,对于已经长时间不再使用
ORM
的人来表达一下我的看法。ORM
的人来表达一下我的看法。经常看到写
Java
后端的人,写了一大堆模型对象,各种继承和组合都用上了,如 @chanjarster 所说的,一对一,一对多,多对多,单项双向的,直接绕晕了...其实个人觉得
ORM
是一个很糟糕的发明,ORM 唯一的好处就是不用考虑SQL
,简直哭晕,SQL
是一个多么好的东西,现在对于大部分的Java
程序员来说,写个SQL
应该不是大问题,比在这里去背各种对象映射规则简单多了...总结一下
ORM
的缺点性能不高,即使有成熟的框架,有的时候我只要访问一个属性,还是装载了整个对象的数据。(PS:可能可以配置,那学习成本也很高)
不够灵活,很多业务需求,都是需要连表查,调用函数,存储过程...
抽象太麻烦,直接绕晕了
综上,如果你认可的话,那就放弃
ORM
吧替代方案:
使用
MyBaits
直接写SQL
,灵活控制使用
经常看到写NOSQL
数据库,把对象转换为JSON
数据,可以直接存储,如MongoDb
Java
后端的人,写了一大堆模型对象,各种继承和组合都用上了,如 @chanjarster 所说的,一对一,一对多,多对多,单项双向的,直接绕晕了...ORM
是一个很糟糕的发明,ORM 唯一的好处就是不用考虑SQL
,简直哭晕,SQL
是一个多么好的东西,现在对于大部分的Java
程序员来说,写个SQL
应该不是大问题,比在这里去背各种对象映射规则简单多了...🎜 🎜总结一下ORM
的缺点🎜ORM
吧🎜 🎜替代方案:🎜MyBaits
直接写SQL
,灵活控制🎜🎜NOSQL
数据库,把对象转换为JSON
数据,可以直接存储,如MongoDb
🎜🎜 🎜你这个问题好大,简单来说就是搞清楚Model和Model之间的关系,有三个维度
“引用关系”还是“拥有关系”。如果A拥有B,那么A删除的时候B也要跟着删除。如果A引用B,那么A删除了B不用跟着删除。这个根据业务来判断。
单项还是双向。这个根据业务来,你自己判断,不过要记住一点,在“引用关系”下,尽量保持单向。在“拥有关系”下,双向是可以的。
一对一、一对多、多对一、多对多。这个不多讲了,不过有一点要注意,尽量避免多对多,如果用了多对多多问问自己是否一定要这么干。
如果一定要问有什么方法论,可以看看DDD(Domain Driven Design)里的聚合根(Aggregate Root)概念。