成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

我就是不看好jpa

NusterCache / 1088人閱讀

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

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

目前,一些狗屁培訓(xùn)公司,還有一些網(wǎng)絡(luò)課程,包括一些洋課程,為了做項(xiàng)目簡單,很多會(huì)使用jpa。但到了公司發(fā)現(xiàn)根本就不是這樣,這就是理論和現(xiàn)實(shí)的區(qū)別。

頂著被罵的風(fēng)險(xiǎn),我整理發(fā)出來。這可不是爭論php好還是java好性質(zhì)了。

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

如果你經(jīng)歷過多個(gè)公司的產(chǎn)品迭代,尤其是復(fù)雜項(xiàng)目,你就會(huì)發(fā)現(xiàn)Spring Data JPA這種東西是多么的不討好。說實(shí)話,Mybatis的功能有時(shí)候都嫌多,有些純粹是畫蛇添足。

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

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

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

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

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

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

2、 增加了代碼的復(fù)雜度,需要花更多的時(shí)間來理解DAO

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

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

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

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

Mybatis完全能夠應(yīng)對(duì)工業(yè)級(jí)的復(fù)雜SQL,甚至存儲(chǔ)過程(不推薦)。個(gè)人認(rèn)為Mybatis依然是搞復(fù)雜了,它其中還加了一些類似if else的編程語言特性。

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

所以我認(rèn)為:玩具項(xiàng)目或者快速開發(fā),使用Spring Boot JPA。反之,Mybatis是首選。

一些有用的評(píng)論

你說的if else是指的SQL拼接吧,這可是MyBatis的重要功能之一,學(xué)起來一點(diǎn)兒也不復(fù)雜好嗎?

最近也在研究持久層,可以充分利用這個(gè)jpa這個(gè)玩具,兩者結(jié)合是不錯(cuò)的選擇,jpa基本的單表操作,mybatis做復(fù)雜查詢,開發(fā)效率高,降低sql維護(hù)成本,也為優(yōu)化留下空間,當(dāng)然這需要對(duì)spring-data-jpa做一些擴(kuò)展

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

mybatis主要是原生sql,對(duì)于其他沒學(xué)習(xí)過jpa的開發(fā)人員而言降低了學(xué)習(xí)維護(hù)門檻,而且說真的jpa寫了個(gè)鍋你去追其實(shí)還是挺頭疼的...

mybatis-plus整合之后基本curd不用糾結(jié)了,很多對(duì)對(duì)象操作然后直接save就好。復(fù)雜場景、聯(lián)表就直接用原生sql就好,至于性能問題可以用sqlAdvice優(yōu)化下。

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

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

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

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

你好像不是很懂hibernate和jpa…

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

總有一天你會(huì)知道數(shù)據(jù)庫優(yōu)先和程序優(yōu)先的區(qū)別

jpa還有一個(gè)好處,那就是帥鍋啊

END

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

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/74763.html

相關(guān)文章

  • 帶你搭一個(gè)SpringBoot+SpringData JPA的環(huán)境

    摘要:一從零搭建環(huán)境本次我使用的是編輯器來搭建和環(huán)境首先,我們?cè)谛陆?xiàng)目的時(shí)候,選擇,然后就行了??梢钥闯觯敬蔚陌姹緸?。這是一個(gè)非常好用的插件,有了它我們可以不用寫繁瑣的方法。非常適合我們做一些簡答的測試和小功能。 前言 只有光頭才能變強(qiáng)。 文本已收錄至我的GitHub倉庫,歡迎Star:https://github.com/ZhongFuCheng3y/3y 不知道大家對(duì)SpringB...

    i_garfileo 評(píng)論0 收藏0
  • Spring Data JPA 詳盡指南

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

    leanote 評(píng)論0 收藏0
  • JPA的多表復(fù)雜查詢

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

    chaos_G 評(píng)論0 收藏0
  • 幾個(gè)數(shù)據(jù)持久化框架Hibernate、JPA、Mybatis、JOOQ和JDBC Template的

    摘要:不管是還是,表之間的連接查詢,被映射為實(shí)體類之間的關(guān)聯(lián)關(guān)系,這樣,如果兩個(gè)實(shí)體類之間沒有實(shí)現(xiàn)關(guān)聯(lián)關(guān)系,你就不能把兩個(gè)實(shí)體或者表起來查詢。 因?yàn)轫?xiàng)目需要選擇數(shù)據(jù)持久化框架,看了一下主要幾個(gè)流行的和不流行的框架,對(duì)于復(fù)雜業(yè)務(wù)系統(tǒng),最終的結(jié)論是,JOOQ是總體上最好的,可惜不是完全免費(fèi),最終選擇JDBC Template。 Hibernate和Mybatis是使用最多的兩個(gè)主流框架,而JOO...

    xietao3 評(píng)論0 收藏0
  • Spring Boot+SQL/JPA實(shí)戰(zhàn)悲觀鎖和樂觀鎖

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

    Keven 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<