hibernate和spring?hibernate和jpa
夕逆IT
- 數(shù)據(jù)庫
- 2023-08-13 10:35:34
- 208

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