JPA
ORM概述
ORM(Onject-Relational Mapping)表示对象关系映射。在面向对象的软件开发中利用ORM可以把对象==(class)映射成为关系型数据库中的一张表(table),对象中的属性(property)映射成为表中的一个字段(field)每一个对象(object)映射为表中的一行记录(record)==,从而达到操作实体类就相当于操作数据库中数据表的功能。
特点:
- 让开发人员专注业务逻辑,提高了开发效率。
- 直接操作对象,减少了对SQL的依赖,大大减少了对数据访问层的代码。
- 在一定程度上牺牲了程序的执行效率。
常见的ORM框架:Mybatis 、Hibernate、JPA
JPA概述
JPA的全称是Java Persistence API,即Java持久化API,是SUN公司推出的一套基于ORM的规范,内部是由一系列的接口和抽象类构成。可以通过注解或者XML描述映射关系。
Hibernate概述
Hibernate是一个开源的对象关系映射框架,他对JDBC进行了非常轻量级的封装,他将POJO与数据库表建立映射关系,是一个全自动的ORM框架,Hibernate可以自动生成SQL语句,自动执行,是的Jvav程序员可以随心所欲使用面向对象编程思想操纵数据库。
下面是一个详细的 Hibernate 应用程序体系结构视图以及一些重要的类。
小结:
ORM是什么?:对象关系映射,是一种实现使用对象操作数据库的设计思想。
JPA是什么?:是Java官方(SUN公司)制定的ORM方案的规范(标准)。
Hibernate是什么?:是实现JPA规范的一个框架。
spring data jpa概述
Spring Data JPA是Spring基于ORM框架,JPA规范的基础上封装的一套JPA应用框架。可以使开发者用极其简单的代码实现对数据库的访问和操作。它提供了CURD在内的常用功能,并且易于扩展。学习使用spring data jpa 可以极大的提高开发效率。
在实际的工作工程中,推荐使用Spring Data JPA+ ORM(Hibernate)完成操作。
学习JPA的三个重点
- ORM映射元数据:JPA支持XML和注解两种元数据的格式,元数据描述对象和表的映射关系,框架据此将实体对象持久化到数据表中
- JPA的API:用来操作实体对象,执行CURD操作,框架在后台替我们完成了所有的事情,开发者从繁杂的JDBC和SQL代码中解脱出来。
- JPQL查询语言:通过面向对象而非面向数据库的查询语言查询数据,避免程序和SQL语句紧密耦合。
快速入门
- 引入坐标依赖
使用Spring Data JPA需要整合Spring与Spring Data JPA,并且需要提供JPA的服务提供者Hibernate。
<properties>
<spring.version>4.2.4.RELEASE</spring.version>
<hibernate.version>5.0.7.Final</hibernate.version>
<slf4j.version>1.6.6</slf4j.version>
<log4j.version>1.2.12</log4j.version>
<c3p0.version>0.9.1.2</c3p0.version>
<mysql.version>5.1.6</mysql.version>
</properties>
<dependencies>
<!-- junit单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
<!-- spring beg -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.8</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>