JPA是什么?
jdk1.5之后java提供的持久化接口,整合了ORM技术,实现天下归一。
背景:
我们以前用的ORM框架有hibernate,mybatis,每次用的时候都需要使用他们的一些方法和配置配置,每个都需要使用自己的方法,而且不通用。使用了JPA,我们写的java应用调用持久层的时候,不会直接去调用持久层框架,而是去调用JPA的各种接口,在JPA的底层,因为JPA是一套规范,不负责具体的实现细节,他会有一些提供商,这些提供商可以是hibernate,toplink,openJPA等,这些都实现了JPA接口。我们存储数据都是按照JPA的规范去存储的。
这里着重说一下SpringDataJPA。
先说Spring是一个非常有行业前景的,有很大的格局,想把所有的都整合在一起,他有两大特性,SpringIOC和SpringAOP,SpringIOC容器的特性使得Spring有一个很牛的特性,可以很轻易的和任何一个框架整合。SpringData也是这样想的,平常在写代码的时候,可能要操作mysql,oracle还有Redis,SpringData就是把操作这些持久层的技术整合在了一起。SpringData封装的有JMS,Solr,Redis,MongoDB等。同样也对JPA做了一个Spring的封装。就出现了SpringDataJPA。
我们用的是SpringBoot+SpringDataJPA,他俩有很多共性。SpringBoot最火之处是他的微服务,微服务有一个特点,把很多大的项目拆分了很小型的服务,每一个小型的服务提供属于自己的一套功能,互联网里面业务更新迭代的很快,我们需要一个字“快”,一个新的技术出来的话,我们要实现它,就需要快速的用SpringBoot实现它。用SpringDataJPA也是很快的。用mybatis来写项目的话,要写mapper,整合mybatis,还有要建表,mybatis还有一个不方便的点,如果说前期用的mysql,之后想换成oracle的话,切换库的话,对mysql来说风险很大,mysql是半封装的框架,数据库之间是有差别的,,比如说模糊查询mysql中用的是like查询的,但是oracle中使用rownum写的,所以进行数据库迁移的话,要改很多sql语句的代码。SpringDataJPA不会有这样的问题,他的底层是hibernate,hibernate的有点他都有,可以用完全封装的方式写sql语句。现在用SpringBoot项目的人,用JPA的也很多。
未完待续......