JPA的全稱是Java Persistence API, 即Java 持久化API,是SUN公司推出的一套基于ORM的規(guī)范,內(nèi)部是由一系列的接口和抽象類構(gòu)成。JPA通過JDK 5.0注解描述對象-關(guān)系表的映射關(guān)系,并將運行期的實體對象持久化到數(shù)據(jù)庫中。
JPA的優(yōu)勢:標(biāo)準(zhǔn)化、容器級特性的支持、簡單方便、查詢能力、高級特性
JPA規(guī)范本質(zhì)上就是一種ORM規(guī)范,注意不是ORM框架——因為JPA并未提供ORM實現(xiàn),它只是制訂了一些規(guī)范,提供了一些編程的API接口,但具體實現(xiàn)則由服務(wù)廠商來提供實現(xiàn)。JPA和Hibernate的關(guān)系就像JDBC和JDBC驅(qū)動的關(guān)系,JPA是規(guī)范,Hibernate除了作為ORM框架之外,它也是一種JPA實現(xiàn)。
1、創(chuàng)建一個maven工程,在pom.xml中導(dǎo)入對應(yīng)的坐標(biāo)
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、編寫實體類和數(shù)據(jù)表的映射配置,創(chuàng)建實體類以后,使用對應(yīng)的注釋配置映射關(guān)系
@Entity 作用:指定當(dāng)前類是實體類。 @Table 作用:指定實體類和表之間的對應(yīng)關(guān)系。 屬性: name:指定數(shù)據(jù)庫表的名稱 @Id 作用:指定當(dāng)前字段是主鍵。 @GeneratedValue 作用:指定主鍵的生成方式。。 屬性: strategy :指定主鍵生成策略。 @Column 作用:指定實體類屬性和數(shù)據(jù)庫表之間的對應(yīng)關(guān)系 屬性: name:指定數(shù)據(jù)庫表的列名稱。 unique:是否唯一 nullable:是否可以為空 inserttable:是否可以插入 updateable:是否可以更新 columnDefinition: 定義建表時創(chuàng)建此列的DDL secondaryTable: 從表名。如果此列不建在主表上(默認(rèn)建在主表),該屬性定義該列所在從表的名字搭建開發(fā)環(huán)境[重點]