日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

我無法明確的告訴你JPA和MyBatis在國內哪個會更流行,我本人更喜歡JPA,但是我本人日常開發用MyBatis多。

但是我的回答絕對不是在劃水,而是我多年來自己的一點小小的思考。MyBatis用好了就是神!用不好就特么一坨……并且,這個框架只有兩個結果,要么就是用的好,要么就是用不好……

而JPA,用不好,比MyBatis還一坨……但是用好了,那是超越神的存在,因為你已經完全脫離了事務腳本。

有沒有更牛逼的?

有,但是現實中你基本遇不到這樣的大神,因為這樣的大神在成為大神之前,要么早就財務自由了,要么就轉管理了。

國內大多數項目其實根本沒有設計過程,都是想到哪兒寫到哪兒,別說領域模型的設計了,就連OOP都沒有,都是披著OOP的外殼在寫過程。

當然這是大環境所逼迫的,并不是程序員、架構師所能左右的,大環境就很浮躁,就認為一個月能開發出一個支付寶,你沒辦法去抗衡它,大家都要吃飯的嘛,我為什么要打擊別人的夢想呢?只要您給錢,我就盡量滿足您。

我(曾經)非常憤恨這種劣幣驅逐良幣的環境,本來大家都是安心做設計,然后水到渠成的進行開發,客戶也是和和氣氣的跟開發進行商討,結果有些人念歪了敏捷的經,更有甚者,讀了一本《人人都是產品經理》就真的認為自己是個非常牛逼的產品經理了。

都特么一群....

千萬不要自信的認為,前三十年的懶惰,通過一兩本書就能解決自己知識的匱乏。

結果就是導致現在大家都不喜歡靜下心來搞設計,而是喜歡不管三七十二一先沖山頭再說,稍微有點前瞻性的考慮都認為你是過度設計。

  • 你跟他說制定作戰計劃。
  • 毛的的作戰計劃,全都給我上,見招拆招,逢人便打就對了。

仔細一想,好像也沒說錯什么……

但是如果重心放在設計上,那么自然JPA在OOP上比MyBatis優秀太多太多了。

封裝、繼承、多態抽象、接口、實現

一說到OOP,大家都信手拈來,甚至什么貧血模型、充血模型、脹血模型都跟你說的頭頭是道,但是一涉及到實際開發全都拋到腦后去了。

仔細想想,有多久沒有寫類似下面這種代碼了?(隨便寫著玩的,Lombok僅為減少代碼行數)

@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Table(name="uaa_account")
@Entity
public class Account {
    /* 狀態 */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String username;
    private String password;

    /* 構造 */
    private AccountRepository accountRepository;

    public Account(AccountRepository accountRepository) {
        this.accountRepository = accountRepository;
    }    

    /* 行為 */
    public void login(LoginCommand command) {}
    public void register(RegisterCommand command){}

    /* 事件驅動 */
    @PostPersist
    public void emmitEvent() {}
}

再說一個讓很多開發感到恐懼的事情:

public abstract class AbstractDomAIn {
    @Getter
    protected final String attr;

    public AbstractDomain(String attr) {
        this.attr = attr;
    }
}

試問一下,你有多久沒有寫抽象類和受保護的狀態了?final 這個關鍵字,如果沒有Sonar,大家是不是快把它給忘記了?

只讀屬性究竟意味著什么還記得嗎?
Collections.unmodifiableList() 不可變集合到底用來干嘛的?我估計90%的開發都沒用過這個玩意兒吧?

 

約書亞·布洛克(英語:Joshua J. Bloch,1961年8月28日-),美國著名程序員。他為JAVA平臺設計并實作了許多的功能,曾擔任google的首席Java架構師(Chief Java Architect)。

2001年出版Effective Java,獲得2001年Jolt獎。詹姆斯·高斯林曾表示相當贊賞此書。

大神的代碼隨處可見,你離大神就是那么的近。

  • SOLID五大原則,你是否已經忘記的一干二凈了?
  • 你的代碼是否只有分層,而沒有模式?
  • 23種設計模式,隨口能說五六個,但是這五六個都用來解決什么問題的,有沒有仔細思考過?

我從2018年開始負責面試,到今年已經接近三年了,期間從HR提交過來自己走眼的簡歷至少兩千份,現場面試差不多有四百人,能把設計模式和面向對象說清楚的,寥寥無幾。

現在大家的重心都是怎么快速的沖鋒,前面三個山頭,也不給你一個具體的目標,反正你給我沖,沖到哪里咱不管,起碼你沖了。

于是我們可以看到99%的代碼結構就是:

  • Controller - 幾乎沒代碼
  • Service - 重災區
  • Utils - 重災區
  • Entity - 跟VO有啥區別?
  • Repository 或 MApper 或 Dao - 幾乎沒代碼
  • Mapper.xml - 證明我是SQL小王子的時候到了
  • Test - What? 這干嘛的?

Service太重了,隨便翻開一個Service,里面的代碼一大堆。

不信隨手翻一下現有的項目,超過一千行的Service是不是到處都是?

我形容這種開發為豬突式開發

那么這個時候,MyBatis牛逼的地方就顯現出來了。

幸好還有個Spring框架如果沒有Spring框架,什么OOP,扯犢子呢?抓緊往上懟懟懟懟代碼,懟完拉倒。

框架是為了簡化開發任務,讓你有更多的時間去做程序設計和邏輯架構。所以,哪個會更流行取決于大環境,而不是開發人員。我本人是更喜歡先設計,后開發的。

但是我同樣是一個有同情心的人,我不忍心破壞別人想當一個架構師的夢想,雖然他可能一行代碼都沒寫過,我依然支持他,當然前提是該背的鍋你得背,該我的錢一個子兒都不能少。

說些題外話

我個人有三種開發方式,第一種是前端驅動,第二種是后端驅動(好像說的是廢話……),第三種是數據驅動。

前端驅動顧名思義,就是做一個項目,前端先上,前端根據設計稿和產品文檔實現了UI之后,后端再根據前端UI去設計后臺架構。這么做的好處在于無論是客戶還是開發,都能面向一個具體的頁面進行需求討論和架構設計,最終實現結果不會跑偏。

前端的開發速度是比后端快的,因此在發生需求變動的時候,響應速度也非??欤瑢嵲谟幸恍┍容^難處理的UI,例如需要Canvas繪圖的地方,通過口頭(或文檔)補充即可。但是這種方式只適合一些面向客戶的小項目,而不是面向產品的項目,就是說客戶要什么就給他什么,他要一匹馬,你就別給他設計一輛車,到時候吃力不討好。

這種類型的項目,MyBatis最合適。

如果一個項目非常大,例如從頭開始設計一個B2B的交易平臺(包括后臺ERP)產品,就不能采用這種方式。

因為采用這種方式的壞處在于他不能站在高處俯瞰全貌,都是一點一點的往上堆砌,就是大家常說的摸著石頭過河,最終會導致抽象不足,代碼冗余,重構成本高,維護成本高,數據孤島嚴重,子系統甚至是子模塊業務互斥,向著惡性循環發展,最終項目變得越來越龐雜,無數的內耗產生。

大的項目,一定要從數據建模開始設計,一定是后端驅動,要認真仔細的思考每一個細節,先做抽象設計,然后具象到模塊,再由模塊具象到每一個實體、接口。

當這一切都設計好了之后,開始模擬數據流轉,注意,此時還沒有開始寫一行代碼。

數據流轉通暢之后,剩下的編碼只是水到渠成的事情,編碼過程根本不重要。而這么做,JPA是最合適的。

但是,大部分土老帽認為程序設計是一件很low bee的事情,別笑,真事兒,因為他們認為不需要你來設計,他們自己就能設計好,你所要做的就是把他們“設計”好的東西用代碼實現就好了。

他們最喜歡聽的一句話就是:

嗯!老板說得對,小的馬上就去寫代碼!

而不是:

老板,我覺得這個地方需要重新設計一下。

最后一種,是數據驅動,這種開發方式也很常見,最明顯的就是報表以及大部分掛羊頭賣狗肉的大數據處理,因為就這些數據,你很難去做后端驅動,你設計的再好,數據就是缺失的你沒辦法。

所以數據驅動,MyBatis也是比較合適的,JPA可能不太合適。

來源:
zhihu.com/question/317183937/answer/1474629982

分享到:
標簽:MyBatis
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定