公司最新的项目在技术选型的时候,选择使用 JPA 最为数据映射的解决方案。由于之前对 Mybatis 更熟悉,因此,在搭建整个项目的时候,也对 JPA 有了更进一步的学习和认知。
为何选择 JPA 而不是 Mybatis
JPA 是完全的 ORM 框架,对象、关系映射能力极强,数据库无关性比较好,用好 JPA 可以不用写 SQL 而减少大量的代码开发,后期维护性也比较好。
当然现在 Mybatis 大行其道也不是不无道理,它对模型的要求不高,上手难度较低,能适应需求多变的各种场景。
怎样认识 JPA 与 Hibernate
产生这个疑问是在项目里打印日志的时候,我记得明明只引用了 JPA 的依赖,但是总有 hibernate 的相关日志在控制台出现,于是想一探究竟。
JPA 实际上是一种规范,它本身提供了一系列的接口,并没有给具体的实现,而 Hibernate 是遵循 JPA 规范的一种实现。JPA 是 SUN 公司提出的持久化规范,除了 Hibernate 这个实现外,还有 TopLink、openJPA 等其他实现。
从目前来看,Hibernate 是使用最广泛的实现,也是 Spring 家族推荐的默认实现。