搜尋

首頁  >  問答  >  主體

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

天蓬老师天蓬老师2766 天前316

全部回覆(2)我來回復

  • 大家讲道理

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

    終於可以來吐槽一下了,對於已經長時間不再使用 ORM 的人來表達一下我的看法。

    經常看到寫Java 後端的人,寫了一大堆模型對象,各種繼承和組合都用上了,如@chanjarster 所說的,一對一,一對多,多對多,單項雙向的,直接繞暈了...

    其實個人覺得ORM 是一个很糟糕的发明,ORM 唯一的好处就是不用考虑 SQL,简直哭晕,SQL 是一个多么好的东西,现在对于大部分的 Java 程序员来说,写个 SQL 是一個很糟糕的發明,ORM 唯一的好處就是不用考慮SQL,簡直哭暈,SQL 是一個多麼好的東西,現在對於大部分的

    程式設計師來說,寫個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
  • 取消回覆