一、JPA概述:
JPA的全称是Java Persistence API, 即Java 持久化API,是SUN公司推出的一套基于ORM的规范,内部是由一系列的接口和抽象类构成。JPA通过JDK 5.0注解描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
JPA的优势:标准化、容器级特性的支持、简单方便、查询能力、高级特性
二、JPA与Hibernate的关系:
JPA规范本质上就是一种ORM规范,注意不是ORM框架——因为JPA并未提供ORM实现,它只是制订了一些规范,提供了一些编程的API接口,但具体实现则由服务厂商来提供实现。JPA和Hibernate的关系就像JDBC和JDBC驱动的关系,JPA是规范,Hibernate除了作为ORM框架之外,它也是一种JPA实现。
三、JPA环境搭建:
1、创建一个maven工程,在pom.xml中导入对应的坐标
1 <properties>
2 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
3 <project.hibernate.version>5.0.7.Final</project.hibernate.version>
4 </properties>
5
6 <dependencies>
7 <!-- junit -->
8 <dependency>
9 <groupId>junit</groupId>
10 <artifactId>junit</artifactId>
11 <version>4.12</version>
12 <scope>test</scope>
13 </dependency>
14
15 <!-- hibernate对jpa的支持包 -->
16 <dependency>
17 <groupId>org.hibernate</groupId>
18 <artifactId>hibernate-entitymanager</artifactId>
19 <version>${project.hibernate.version}</version>
20 </dependency>
21
22 <!-- c3p0 -->
23 <dependency>
24 <groupId>org.hibernate</groupId>
25 <artifactId>hibernate-c3p0</artifactId>
26 <version>${project.hibernate.version}</version>
27 </dependency>
28
29 <!-- log日志 -->
30 <dependency>
31 <groupId>log4j</groupId>
32 <artifactId>log4j</artifactId>
33 <version>1.2.17</version>
34 </dependency>
35
36 <!-- Mysql and MariaDB -->
37 <dependency>
38 <groupId>mysql</groupId>
39 <artifactId>mysql-connector-java</artifactId>
40 <version>5.1.6</version>
41 </dependency>
42 </dependencies>
2、编写实体类和数据表的映射配置,创建实体类以后,使用对应的注释配置映射关系
@Entity
作用:指定当前类是实体类。
@Table
作用:指定实体类和表之间的对应关系。
属性:
name:指定数据库表的名称
@Id
作用:指定当前字段是主键。
@GeneratedValue
作用:指定主键的生成方式。。
属性:
strategy :指定主键生成策略。
@Column
作用:指定实体类属性和数据库表之间的对应关系
属性:
name:指定数据库表的列名称。
unique:是否唯一
nullable:是否可以为空
inserttable:是否可以插入
updateable:是否可以更新
columnDefinition: 定义建表时创建此列的DDL
secondaryTable: 从表名。如果此列不建在主表上(默认建在主表),该属性定义该列所在从表的名字搭建开发环境[重点]
|