色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql查詢調(diào)優(yōu),MyBatisHibernateSpring

mysql查詢調(diào)優(yōu),MyBatisHibernateSpring?

選擇哪一種框架,需要結(jié)合項(xiàng)目實(shí)際來,結(jié)合業(yè)務(wù)場景和團(tuán)隊(duì)成員的能力,綜合考慮并選擇技術(shù)方案。

先和大家講講每一種框架是啥

Hibernate:POJO與數(shù)據(jù)庫表建立映射關(guān)系;Java程序員可以使用操作對象的思維操作數(shù)據(jù)庫。(POJO就是Java Bean,只有有屬性、set、get方法)

Mybatis:做的是POJO與SQL之間的映射關(guān)系;程序員需要編寫SQL;

Spring Data JPA:有人說它是對Hibernate更高級的封裝,這種說法是有一些問題的;第二部分詳細(xì)說明一下。

要解釋清楚Spring Data JPA是什么,需要一步步說起

期初Java需要通過各個(gè)數(shù)據(jù)庫廠商提供的API進(jìn)行數(shù)據(jù)庫的訪問,后來JAVA提出了JDBC,程序直接使用JDBC這套規(guī)范就可以跟各個(gè)數(shù)據(jù)庫進(jìn)行對接;

接著誕生了ORM技術(shù),簡化了Java對象的持久化工作,出現(xiàn)了Hibernate、TopLink等ORM框架;

Sun公司在JDK1.5的時(shí)候,吸收了Hibernate、TopLink等ORM框架的優(yōu)點(diǎn),提出了Java持久化規(guī)范:JPA;

Hibernate在3.2的時(shí)候提供了JPA的實(shí)現(xiàn),其余的JPA的供應(yīng)商還有諸如OpenJPA、Toplink等;

Spring在做持久化這一塊的工作,開發(fā)了Spring-data-xxx這一系列包,如:Spring-data-jpa,Spring-data-redis,Spring-data-mongodb等等,這些都是Spring 提供的基于JPA和其他一些NOSQL的Repository。

Spring data JPA 是在JPA規(guī)范的基礎(chǔ)下提供了Repository層的實(shí)現(xiàn),但是使用哪一款ORM需要你自己去決定;相比我們更為熟悉的Hibernate和MyBatis,Spring Data JPA可以看做更高層次的抽象。

使用Spring data JPA,默認(rèn)底層是Hibernate,但是可以修改成其他的ORM框架。

幾種框架的優(yōu)劣

Hibernate開發(fā)難度較大,學(xué)習(xí)周期長;但是可以讓開發(fā)者無需關(guān)心SQL,更專注業(yè)務(wù)流程;HQL不關(guān)心數(shù)據(jù)庫的類型,所以遷移起來很方便;

Mybatis需要手動編寫SQL語句(更直觀),可更直接地對SQL進(jìn)行優(yōu)化,但是數(shù)據(jù)庫移植性差;

Spring Data JPA簡化了數(shù)據(jù)庫訪問,可以通過命名規(guī)范編寫SQL,如果SQL較為復(fù)雜,還是需要通過注解的方式編寫SQL;它更適用于現(xiàn)在微服務(wù)的架構(gòu)(微服務(wù)的極致都是單表操作)。

從個(gè)人的角度:MyBatis>Spring Data JPA>Hibernate,或者M(jìn)yBatis + Spring Data JPA。

我將持續(xù)分享Java開發(fā)、架構(gòu)設(shè)計(jì)、程序員職業(yè)發(fā)展等方面的見解,希望能得到你的關(guān)注。