国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

我就是不看好jpa

NusterCache / 1077人閱讀

摘要:要是緊急排查個問題,媽蛋雖然有很多好處,比如和底層的無關。你的公司如果有,是不允許你亂用的。

知乎看到問題《SpringBoot開發使用Mybatis還是Spring Data JPA??》,順手一答,討論激烈。我實在搞不懂spring data jpa為啥選了hibernate作為它的實現,是“Gavin King”的裙帶關系么?
DAO層搞來搞去,從jdbc到hibernate,從toplink到jdo,到現在MyBatis勝出,是有原因的。

目前,一些狗屁培訓公司,還有一些網絡課程,包括一些洋課程,為了做項目簡單,很多會使用jpa。但到了公司發現根本就不是這樣,這就是理論和現實的區別。

頂著被罵的風險,我整理發出來。這可不是爭論php好還是java好性質了。

忠告:精力有限,一定要先學MyBatis啊。jpa那一套,表面簡單而已。
以下是原始回答

如果你經歷過多個公司的產品迭代,尤其是復雜項目,你就會發現Spring Data JPA這種東西是多么的不討好。說實話,Mybatis的功能有時候都嫌多,有些純粹是畫蛇添足。

jpa雖然是規范,但和hibernate這種ORM是長得比較像的(不說一些特殊場景的用法)。

Spring Data JPA 是個玩具,只適合一些簡單的映射關系。也不得不提一下被人吹捧的querydsl,感覺有些自作聰明的討巧。實在不想為了一個簡單的DAO層,要學一些費力不討好的東西。

List persons = queryFactory.selectFrom(person)
  .where(person.children.size().eq(
    JPAExpressions.select(parent.children.size().max())
  .from(parent)))
  .fetch();

看看上面的查詢語句,完全不如普通SQL表達的清晰。要是緊急排查個問題,媽蛋...

jpa雖然有很多好處,比如和底層的SQL無關。但我覺得Spring Data JPA有以下壞處:

1、 屏蔽了SQL的優雅,發明了一種自己的查詢方式。這種查詢方式并不能夠覆蓋所有的SQL場景。

2、 增加了代碼的復雜度,需要花更多的時間來理解DAO

3、DAO操作變的特別的分散,分散到多個java文件中,或者注解中(雖然也支持XML)。如果進行一些掃描,或者優化,重構成本大

4、不支持復雜的SQL,DBA流程不好切入

Mybatis雖然也有一些問題,但你更像是在寫確切的SQL。它比Spring Data JPA更加輕量級。

你只要在其他地方調試好了SQL,只需要寫到配置文件里,起個名字就可以用了,少了很多燒腦的轉換過程。

Mybatis完全能夠應對工業級的復雜SQL,甚至存儲過程(不推薦)。個人認為Mybatis依然是搞復雜了,它其中還加了一些類似if else的編程語言特性。

你的公司如果有DBA,是不允許你亂用SQL的。用Mybatis更能切入到公司的流程上。

所以我認為:玩具項目或者快速開發,使用Spring Boot JPA。反之,Mybatis是首選。

一些有用的評論

你說的if else是指的SQL拼接吧,這可是MyBatis的重要功能之一,學起來一點兒也不復雜好嗎?

最近也在研究持久層,可以充分利用這個jpa這個玩具,兩者結合是不錯的選擇,jpa基本的單表操作,mybatis做復雜查詢,開發效率高,降低sql維護成本,也為優化留下空間,當然這需要對spring-data-jpa做一些擴展

查詢直接sql,其他的還是orm方便

mybatis主要是原生sql,對于其他沒學習過jpa的開發人員而言降低了學習維護門檻,而且說真的jpa寫了個鍋你去追其實還是挺頭疼的...

mybatis-plus整合之后基本curd不用糾結了,很多對對象操作然后直接save就好。復雜場景、聯表就直接用原生sql就好,至于性能問題可以用sqlAdvice優化下。

jdbc template+代碼生成器,更簡單更高效

jpa這玩意,寫一個簡單的數據庫操作,就比如說單表的操作,很好用。如果是多表,那就算了吧

spring boot 推薦jpa,知道為什么嗎

native=true 想用原生查詢也沒人攔著你啊

你好像不是很懂hibernate和jpa…

不知道你是否清楚 jpa,hibernate,spring data jpa,還有querydsl 之間的關系。

總有一天你會知道數據庫優先和程序優先的區別

jpa還有一個好處,那就是帥鍋啊

END

來,越年輕越狂妄的家伙們,來噴我啊。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74763.html

相關文章

  • 帶你搭一個SpringBoot+SpringData JPA的環境

    摘要:一從零搭建環境本次我使用的是編輯器來搭建和環境首先,我們在新建項目的時候,選擇,然后就行了。可以看出,本次的版本為。這是一個非常好用的插件,有了它我們可以不用寫繁瑣的方法。非常適合我們做一些簡答的測試和小功能。 前言 只有光頭才能變強。 文本已收錄至我的GitHub倉庫,歡迎Star:https://github.com/ZhongFuCheng3y/3y 不知道大家對SpringB...

    i_garfileo 評論0 收藏0
  • Spring Data JPA 詳盡指南

    摘要:而本身也是基于的實現。有點類似于實現類和接口的關系。而是在兩者的肩膀上更近一步,提供了更加方便的操作。順帶一說,與兩者不同,它不基于協議,而是直接通過操作語句來操作數據庫。 人生苦短,我用 SDJ! Spring Data JPA(SDJ)在我看來,相比于 MyBatis 和 Hibernate 最大的好處就在于,它太方便了!如果你的業務邏輯并不需要控制細膩度很高的情況下(SDJ 在我...

    leanote 評論0 收藏0
  • JPA的多表復雜查詢

    摘要:我將舉幾個栗子,來詳細的說一下我自己在使用多表復雜查詢的場景和想法。名字手機號這是一個單表的多條件復雜查詢,由于是在幾個屬性中進行篩選,其中的屬性的個數不知道有多少個,所以只需要利用查詢就可以很方便的實現這個需求。 最近工作中由于要求只能用hibernate+jpa 與數據庫進行交互,在簡單查詢中,jpa繼承CrudRepository接口 ,然后利用jpa的方法命名規范進行jpql查...

    chaos_G 評論0 收藏0
  • 幾個數據持久化框架Hibernate、JPA、Mybatis、JOOQ和JDBC Template的

    摘要:不管是還是,表之間的連接查詢,被映射為實體類之間的關聯關系,這樣,如果兩個實體類之間沒有實現關聯關系,你就不能把兩個實體或者表起來查詢。 因為項目需要選擇數據持久化框架,看了一下主要幾個流行的和不流行的框架,對于復雜業務系統,最終的結論是,JOOQ是總體上最好的,可惜不是完全免費,最終選擇JDBC Template。 Hibernate和Mybatis是使用最多的兩個主流框架,而JOO...

    xietao3 評論0 收藏0
  • Spring Boot+SQL/JPA實戰悲觀鎖和樂觀鎖

    摘要:所以悲觀鎖是限制其他線程,而樂觀鎖是限制自己,雖然他的名字有鎖,但是實際上不算上鎖,只是在最后操作的時候再判斷具體怎么操作。悲觀鎖和樂觀鎖比較悲觀鎖適合寫多讀少的場景。 最近在公司的業務上遇到了并發的問題,并且還是很常見的并發問題,算是低級的失誤了。由于公司業務相對比較復雜且不適合公開,在此用一個很常見的業務來還原一下場景,同時介紹悲觀鎖和樂觀鎖是如何解決這類并發問題的。 公司業務就是...

    Keven 評論0 收藏0

發表評論

0條評論

NusterCache

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<