JPA概述
JDBC
是一个类一个接口,定义了访问数据库的通用接口,可以用java规范的访问数据库,
持久层框架
数据的存储,也就是三层框架中的Dao层,
Hibernate:开源的轻量级的ORM
- ORM(Object Relation Mapping):对象(内存中的java对象)关系(表的数据)映射(Mapping映射)
- 由面向对象的开发方法而产生的,对象和关系数据库
- 对象和关系数据是业务实体的两种表现形式
- ORM实现内存中对象到关系数据库数据的映射,以对象管理表
- 将对象映射到数据库中存储的表,操作对象就是操作数据库中的表
Mybatis:半ORM
- sql语句需要手工编写
- 支持定制化sql,存储过程以及高级映射
- 两种方式进行持久化的处理:xml或注解来配置映射原生信息
总结:
- Hibernate自动化,Mybatis手工编写sql
- 对于复杂的程序推荐Mybatis,因为Mybatis灵活,可以特定的数据库的sql语句,但是Mybatis移植性不好,因为编写的sql语句只适应一个数据库,
- 相比之下Hibernate较好,在不修改代码的情况下就可以使用不同的数据库
如果项目需要适配不同的数据库,使用Hibernate
如果是互联网应用,用大量的sql语句,需要随时优化建议使用Mybatis
JPA是什么
sun公司定义的一个规范
JPA(Java Persistence API):java持久API(用来对象持久化的)也就是操作数据库的
用来在java对象和关系数据库之间保存数据,充当面向对象的领域模型和关系数据库系统之间的桥梁
JPA定义了一些通用的接口,通过接口可以可以访问不同的数据库。
JPA使用有两种方式,一种是JDK注解,一种是XML文件描述对象关系表的映射关系,并将运行期的实体对象持久化到数据库中
Sun引入JPA ORM规范原因
- 简化Java EE 和Java SE 应用开发工作
- Sun希望整合ORM技术,实现天下归一
总结:
JPA等同于JDBC的规范,通过JPA可以集成对数据库的统一访问
JPA的实现
规范就是一个文档就是一个说明,规范不能直接的使用,我们要使用JPA规范的实现
- Hibernate
- JPA的始作俑者就是Hibernate的作者
- Hibernate 从3.2开始兼容JPA
- OpenJPA
- OpenJPA是Apache 组织提供的开源项目
- EclipseLink
- EclipseLink的前身是Toplink,Oracle的企业级ORM.
JPA的优势
- 标准化
- 可以使用JPA访问不同的数据库,不同的ORM框架,只要少量的修改代码或者是不修改代码
- 简单易用,继承了不同的框架:
- JPA提供简单的统一编程模型,可以在Spring,SpringBoot框架中使用
- 可媲美JDBC的查询能力:
- JPA是面向对象的以对象的方式来访问表中的数据
- 定义了独特的JPQL语言
- 支持面向对象的高级特性
- 类之间的继承,多态,类和类之间的复杂关系
总结:标准化是最大的优势
JPA的三方面技术
ORM映射元数据:
- 支持XML和注解两种元数据形式,元数据描述对象和表之间的映射关系,框架将对象持久化到数据库表中
JPA和API
- 对java对象执行CRUD行为,框架会把你的方法转换成数据库能识别的sql语句
查询语言(JPQL)
- 数据能存进去还得能查出来,通过JPQL可以获取持久层中的数据,因为使用的是JPQL是面向对象的,不是面向数据库的,即使你更换了数据库软件,也不用修改程序