1. JDBC和JPA的區別
- 不同標准:jdbc是數據庫的統一接口標准;jpa是orm框架的統一接口標准。
- 用法區別:jdbc更注重數據庫,orm則更注重於java代碼,但是實際上jpa實現的框架底層還是用jdbc去和數據庫打交道。
2. JDBC(Java DataBase Connectivity)
是java連接數據庫操作的原生接口。JDBC對Java程序員而言是API,為數據庫訪問提供標准的接口。由各個數據庫廠商及第三方中間件廠商依照JDBC規范為數據庫的連接提供的標准方法。
- 優點:運行速度最快,所有操作數據庫的技術底層都是jdbc寫的
- 缺點:重復代碼多,耦合性高,開發效率低,更換數據庫比較繁瑣
3. ORM(Object-Relational Mapping)
對象關系映射。簡單的說:ORM就是建立實體類和數據庫表之間的關系,從而達到操作實體類就相當於操作數據庫表的目的。
優點:減少重復性代碼。
常見的orm框架有:
Hibernate、spring data jpa、open jpa
Hibernate
Hibernate是一個開源的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,它將POJO與數據庫表建立映射關系,是一個全自動的orm框架,hibernate可以自動生成SQL語句,自動執行,使得Java程序員可以使用面向對象的思維來操縱數據庫。是一種JPA實現。
4. JPA(Java Persistence API)
Java對象持久化的 API。是SUN公司推出的一套基於ORM的規范,通過注解或者XML描述【對象-關系表】之間的映射關系,並將實體對象持久化到數據庫中。JPA規范本質上就是一種ORM規范,注意不是ORM框架——因為JPA並未提供ORM實現,它只是制訂了一些規范,提供了一些編程的API接口,但具體實現則由服務廠商來提供實現。JPA是為了讓面向對象設置的,為了不寫sql語句而設置的。
優點:數據庫移植快,一級二級緩存,查詢,提高性能(ehcache框架實現緩存)
缺點:查詢所有的時候,find性能無法控制,無法干預sql語句的生成,對sql語句要求高的話
5. 多個數據訪問框架區別
Hibernate:是JPA的一種實現,是一個框架
Spring Data JPA:對JPA規范的再次抽象,底層使用Hibernate實現
Spring Data JDBC: jdbcTemplate模板數據庫簡化對數據庫的操作,相比傳統JDBC而言省去了,數據庫驅動,連接等無關配置,只需要寫sql,設置參數
Mybatis:是一個持久化框架,但不完全是一個orm框架,不是依照的jpa規范,她需要些sql語句,半ORM。
下圖說明上面介紹的名詞之間相互關系

