hibernate和spring?hibernate和jpa
- 夕逆IT
- 數(shù)據(jù)庫(kù)
- 2023-08-13
- 207
這篇文章給大家聊聊關(guān)于hibernate和spring,以及hibernate和jpa對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站哦。Java開發(fā)中,MyBati...
這篇文章給大家聊聊關(guān)于hibernate和spring,以及hibernate和jpa對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站哦。
Java開發(fā)中,MyBatis、Hibernate、Spring Data JPA應(yīng)該如何選擇
選擇哪一種框架,需要結(jié)合項(xiàng)目實(shí)際來,結(jié)合業(yè)務(wù)場(chǎng)景和團(tuán)隊(duì)成員的能力,綜合考慮并選擇技術(shù)方案。
先和大家講講每一種框架是啥Hibernate:POJO與數(shù)據(jù)庫(kù)表建立映射關(guān)系;Java程序員可以使用操作對(duì)象的思維操作數(shù)據(jù)庫(kù)。(POJO就是JavaBean,只有有屬性、set、get方法)
Mybatis:做的是POJO與SQL之間的映射關(guān)系;程序員需要編寫SQL;
SpringDataJPA:有人說它是對(duì)Hibernate更高級(jí)的封裝,這種說法是有一些問題的;第二部分詳細(xì)說明一下。
要解釋清楚SpringDataJPA是什么,需要一步步說起期初Java需要通過各個(gè)數(shù)據(jù)庫(kù)廠商提供的API進(jìn)行數(shù)據(jù)庫(kù)的訪問,后來JAVA提出了JDBC,程序直接使用JDBC這套規(guī)范就可以跟各個(gè)數(shù)據(jù)庫(kù)進(jìn)行對(duì)接;
接著誕生了ORM技術(shù),簡(jiǎn)化了Java對(duì)象的持久化工作,出現(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。
SpringdataJPA是在JPA規(guī)范的基礎(chǔ)下提供了Repository層的實(shí)現(xiàn),但是使用哪一款ORM需要你自己去決定;相比我們更為熟悉的Hibernate和MyBatis,SpringDataJPA可以看做更高層次的抽象。
使用SpringdataJPA,默認(rèn)底層是Hibernate,但是可以修改成其他的ORM框架。
幾種框架的優(yōu)劣Hibernate開發(fā)難度較大,學(xué)習(xí)周期長(zhǎng);但是可以讓開發(fā)者無需關(guān)心SQL,更專注業(yè)務(wù)流程;HQL不關(guān)心數(shù)據(jù)庫(kù)的類型,所以遷移起來很方便;
Mybatis需要手動(dòng)編寫SQL語句(更直觀),可更直接地對(duì)SQL進(jìn)行優(yōu)化,但是數(shù)據(jù)庫(kù)移植性差;
SpringDataJPA簡(jiǎn)化了數(shù)據(jù)庫(kù)訪問,可以通過命名規(guī)范編寫SQL,如果SQL較為復(fù)雜,還是需要通過注解的方式編寫SQL;它更適用于現(xiàn)在微服務(wù)的架構(gòu)(微服務(wù)的極致都是單表操作)。
從個(gè)人的角度:MyBatis>SpringDataJPA>Hibernate,或者M(jìn)yBatis+SpringDataJPA。
我將持續(xù)分享Java開發(fā)、架構(gòu)設(shè)計(jì)、程序員職業(yè)發(fā)展等方面的見解,希望能得到你的關(guān)注。spring與hibernate配置事務(wù)后怎么提交事務(wù)后關(guān)閉數(shù)據(jù)庫(kù)鏈接
事務(wù)管理和AOP一回事,開啟的時(shí)候相當(dāng)于一個(gè)BeforeAdvice。只有當(dāng)所用方法內(nèi)的所用代碼都成功執(zhí)行了才會(huì)提交(這是會(huì)涉及到回滾,有異常會(huì)回滾,當(dāng)然也可以設(shè)置不回滾的異常)。關(guān)閉是在commit后或是回滾后。
關(guān)于hibernate和spring和hibernate和jpa的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
本文鏈接:http://xinin56.com/su/74.html