日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Hibernate與,hibernate與mybatis( 二 )


一個(gè)非常好的問(wèn)題 。在JavaSpring Boot主流開(kāi)發(fā)框架組合中 , 數(shù)據(jù)層開(kāi)發(fā)常用的持久化實(shí)現(xiàn)方案有多種選擇 , 其中MyBatis和Hibernate都是比較受歡迎的框架 。不得不提國(guó)內(nèi)的一個(gè)開(kāi)源框架MyBatis Plus , 對(duì)MyBatis做了進(jìn)一步增強(qiáng)、簡(jiǎn)化開(kāi)發(fā)和提高效率 , 并且提供了簡(jiǎn)單易用的代碼生成器 。
開(kāi)發(fā)過(guò)程只需三步:Spring Boot集成MyBatis和MyBatis Plus , 配置代碼生成器 , 調(diào)用Service開(kāi)發(fā)CRUD功能 。一 , Spring Boot集成二 , 配置代碼生成器MyBatis Plus提供了一個(gè)功能強(qiáng)大的代碼生成工具AutoGenerator1 , 在代碼中修改文件路徑和包名稱:MyBatisPlusGenerator.java2 , 運(yùn)行MyBatisPlusGenerator.main() , 生成器可以放在一個(gè)獨(dú)立的項(xiàng)目中 。
3 , 生成代碼文件entity, mapper和service , 繼承基類(lèi)BaseMapper和IService封裝的CRUD功能函數(shù) 。三 , 調(diào)用ServiceCRUD是創(chuàng)建(Create)、讀取(Retrieve)、更新(Update)和刪除(Delete)4種數(shù)據(jù)庫(kù)操作的首字母縮寫(xiě) , LogServiceImpl實(shí)現(xiàn)IService接口 , 聚合LogMapper功能:以單元測(cè)試讀寫(xiě)Log數(shù)據(jù)表為例: 我是工作多年的Web應(yīng)用架構(gòu)師 , 歡迎關(guān)注我 , 了解更多IT專業(yè)知識(shí) 。
Java開(kāi)發(fā)中 , MyBatis、Hibernate、Spring Data JPA應(yīng)該如何選擇?

Hibernate與,hibernate與mybatis


選擇哪一種框架 , 需要結(jié)合項(xiàng)目實(shí)際來(lái) , 結(jié)合業(yè)務(wù)場(chǎng)景和團(tuán)隊(duì)成員的能力 , 綜合考慮并選擇技術(shù)方案 。先和大家講講每一種框架是啥Hibernate:POJO與數(shù)據(jù)庫(kù)表建立映射關(guān)系;Java程序員可以使用操作對(duì)象的思維操作數(shù)據(jù)庫(kù) 。(POJO就是Java Bean , 只有有屬性、set、get方法)Mybatis:做的是POJO與SQL之間的映射關(guān)系;程序員需要編寫(xiě)SQL;Spring Data JPA:有人說(shuō)它是對(duì)Hibernate更高級(jí)的封裝 , 這種說(shuō)法是有一些問(wèn)題的;第二部分詳細(xì)說(shuō)明一下 。
要解釋清楚Spring Data JPA是什么 , 需要一步步說(shuō)起期初Java需要通過(guò)各個(gè)數(shù)據(jù)庫(kù)廠商提供的API進(jìn)行數(shù)據(jù)庫(kù)的訪問(wèn) , 后來(lái)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在做持久化這一塊的工作 , 開(kāi)發(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開(kāi)發(fā)難度較大 , 學(xué)習(xí)周期長(zhǎng);但是可以讓開(kāi)發(fā)者無(wú)需關(guān)心SQL , 更專注業(yè)務(wù)流程;HQL不關(guān)心數(shù)據(jù)庫(kù)的類(lèi)型 , 所以遷移起來(lái)很方便;Mybatis需要手動(dòng)編寫(xiě)SQL語(yǔ)句(更直觀) , 可更直接地對(duì)SQL進(jìn)行優(yōu)化 , 但是數(shù)據(jù)庫(kù)移植性差;Spring Data JPA簡(jiǎn)化了數(shù)據(jù)庫(kù)訪問(wèn),可以通過(guò)命名規(guī)范編寫(xiě)SQL , 如果SQL較為復(fù)雜 , 還是需要通過(guò)注解的方式編寫(xiě)SQL;它更適用于現(xiàn)在微服務(wù)的架構(gòu)(微服務(wù)的極致都是單表操作) 。

推薦閱讀