JPA

jdbc技术:

 

 JPA是什么

Java Persistence Api:用于对象持久化的api

Java EE 5.0平台标准的ORM框架,使得应用程序以统一的方式访问持久层

JPA和hibernate的关系

JPA是hibernate的一个抽象(就像JDBC和JDBC驱动一样)

JPA是规范:JPA本质上是一种ORM规范,不是ORM框架(因为JPA未提供ORM实现,它只是提供一些规范,具体实现有ORM厂商提供)

hibernate是实现:hibernate除了是ORM框架之外,还是一种JPA实行

从功能上来说,JPA是hibernate的一个功能子集

 

 

JPA的提供商

JPA的目标之一是制定一个由很多供应商的e实现的API,hibernate、OpenJPA、TopLink

 

JPA的优势

标准化:提供相同的API,这保证了基于JPA开发的企业应用能够经过少量的修改就能够在不同的JPA实现框架下进行

简单易用、集成方便:JPA的主要目标之一就是提供更加简单的编程模型,在JPA框架下创建实体和创建Java类一样简单,只需使用注解即可

执行速度可媲美JDBC的查询能力:JPA的查询语言是面向对象的,支持批量修改,join,group by、having等通常只有SQL才提供的高级查询语言,甚至还支持子查询

支持面向对象的高级查询:JPA中能够支持面向对象的高级特性,如类之间的继承,多态和类之间的复杂关系,最大限度的支持面向对象

 

JPA包括三方面的内容:

ORM映射元数据:JPA支持XML和JDK 5.0注解两种数据形式,元数据描述对象和表之间的关系,框架据此将实体对象持久化到数据库中

JPA的API:用来操作实体对象,执行CURD对象,框架在后台完成的所有事情,开发者从繁琐的JDBC和SQL中解放出来

查询语言(JPQL):通过面向对象而非面向数据库的查询语言,避免程序和具体的SQL紧密耦合

 

使用JPA持久化对象的步骤

1、创建persistence.xml文件,在这个配置文件配置持久化操作   

  指定跟哪个数据库进行交互

  需要指定JPA使用哪个框架以及配置该框架的基本属性

2、创建实体类

  使用注解来描述实体类和数据库之间的关系

3、使用JPA API完成数据的增删查改

 

JPA的基本注解:

@Entity

  指出该Java为实体类,将其映射到指定的数据库表

@Table

  用于当实体类名和数据库表名不一样,一般放在@Entity之前

  name属性:指定在数据库中的表名

@Id

  用于指定该属性是数据库的主键列,可以用于属性,也可用于getter方法之前

@GeneratedValue

  主键的生成策略

@Basic

  表示该属性需要映射成为数据库中的列,默认每个getter方法都有

  fetch表示该属性的读取策略,有EAGER、LAZY两种

  optional属性表示该属性是否为null,默认为true

@Column

  当数据库列和属性不一致时候使用

@Transient

  表示该属性不映射到数据库列

@Temporal  

  对日期精度的处理

 

用表来生成主键

将当前主键的值保存到一个数据库表中,主键的值每次都是从指定的表中查询获取

这种方法的生成主键的策略使用于任何数据库,不会造成数据库的不兼容问题

 

 

 Persistence:用于获取EntityManagerFactory实例

  

 

猜你喜欢

转载自www.cnblogs.com/lzb0803/p/8969760.html
JPA