JDBC 与 JPA 初探

 

  1、JDBC 的全频为 Java Database Connectivity,中文含义是 Java 版的访问数据库的连接器,是 Java 原生的访问数据库的一整套标准。对各家数据库厂商来说,JDBC 是 Java 程序与数据库程序交流的一整规范,数据库厂商根据此规范开发相匹配的实现程序;对于程序员来说 JDBC 是我们与数据库交流的一整套接口,我们通过此套接口完成与数据库的数据流通。

  2、JPA 的全拼为 Java Persistence API,中文含义是 Java 持久化应用程序接口,这里的持久化 Persistence 用词比较牵强,虽表明了数据的落盘操作,然并未体现查询、更新、删除等操作,如果按中国文化中的引申来理解的话到可勉强过关——有了存库,自然少不了反向操作,即查库;有了查库,修改、删除等操作也不会缺席,故而称为“持久化”也算勉强过关吧!更加准确的说法应该为“数据库交互接口”。其也是 Java 的原生标准,Sun 也没有做具体的实现,而是交给各厂商来完成。由于 Hibernate 先于 JPA 出现,同时其实现的逻辑正好切合 JPA 规范,所以 Hibernate 常被当做 JPA 实现的范例来使用。

  3、JPA 是 ORM(Object Relation Mapping,即对象与关系型数据表的映射) 是作为 ORM 规范的标准的目标出现的,意在统一 ORM 规范,然现在的实际情况并没有完全达成其原始目标,因为国内用 MyBatis 的人依然很多,主要是 MyBatis 的对原生 SQL 的支持,使得多表关联更灵活,更容易实现。

  4、JPA != ORM,这是两个维度的概念。

  5、JPA 是依赖于 JDBC 是,目前市面上的各种标准和框架实现都是建立在 JDBC 基础之上的,所以 JPA 与 JDBC 不再一个层级上,没有比较的意义。

  6、Spring Data JPA 实际上是对 Hibernate 的进一步抽象与封装,Hibernate 的底层又是 JDBC,Spring Data JPA 实际上是用到了三类技术,Spring Data JPA 接口 ————> Hibernate 接口 ————> JDBC 接口。

  7、框架 MyBatis 也是 ORM 规范的实现,不过其未严格遵循 JPA 规范,因为 JPA 规范的目标就是屏蔽 SQL,屏蔽数据库,以面向对象的思想(OOP)进行编程,将对象与关系表的映射交给框架来完成,程序员把重点放对象的业务逻辑上,然 MyBatis 支持 SQL,也正是因为其支持 SQL 从而增强了其对数据库操作的灵活性和扩展性,从而有一定的市场占有率。

posted @ 2020-08-13 09:10  hapday  阅读(273)  评论(0编辑  收藏  举报