`
H.Z
  • 浏览: 16735 次
  • 来自: 长沙
社区版块
存档分类
最新评论

JPA入门(一)

    博客分类:
  • JPA
 
阅读更多

JPA全称java Persistence API.是java对象持久化的API.是javaEE5.0平台的标准ORM规范,使得应用程序以统一方式访问持久层,主要通 过JDK5.0以上的注解和XML描述对象,将运行期的实体对象持久化到数据库中.

资料:http://www.cnblogs.com/holbrook/archive/2012/12/30/2839842.html#sec-5-3

一.JPA优势

  • 标准化: 提供相同的访问API,这保证了基于JPA开放的企业应用能够经过少量的修改就能够在不同的JPA框架下运行.
  • 对容器级特性的支持:JPA框架中支持大数据集,事务,并发等容器级事务,使得JPA超越了简单持久化框架的局限.
  • 简单易用,集成方便:JPA主要目的之一就是提供更加简单的编程模型,在JPA框架下创建实体和创建Java类一样的简单,没有任何的约束和限制,只需要使用javax.persistence.Entity进行注释,JPA的框架和接口也都非常简单,没有太多的特别的规则和设计模式的要求,JPA基于非侵入式原则设计,因此可以很容易和其他框架或容器集成.
  • 可媲美JDBC的查询能力:JPA的查询语言是面向对象的,JPA定义了独特的JPQL,而且能够支持批量更新和修改,JOIN,GROUP BY HAVING等通常只有SQL才能够提供的高级查询特性,甚至支持子查询.
  • 支持面向对象的高级特性: JPA中能够支持面向对象的高级特性,如类之间的继承,多态和类之间的复杂关系,最大限度的使用面向对象的模型.

二.JPA供应商


 Hibenate : JPA是需要Provider来实现其功能的.Hibernate就是JPA Provider中很强的一个.从功能上说,JPA现在就是Hibernate功能的一个子集,Hibernate从hibernate3.2开始就兼容JPA.

TopLink ,OpenJPA,Spring2.0.1中正式提供对JPA的支持等.

 

三.JPA技术

主要三个方面:

  1. ORM映射元数据 : JPA支持XML和JDK5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中.
  2. JPA的API :  用来操作实体对象,执行CRUD操作.
  3. 查询语言 : 通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合.

四.JPA入门

创建JPA步骤:

  1. 创建persistence.xml  :  在这个文件中配置持久化单元(类似hibernate的hibernate.cfg.xml)文件,指定跟哪个数据库进行交互,配置数据库信息,需要指定JPA使用哪个持久化框架(因为它本身没有持久化能力)
  2. 创建实体类   :  使用annotation来描述实体类跟数据库表之间的一一映射关系.
  3. 创建EntityManagerFactory  :  类似hibernate的sessionFactory.
  4. 创建EntityManager  :  类似hibernate的Session.
  5. 对象持久化操作  :  先开启事务,使用JPA API完成数据的CRUD,在事务提交等.

    五.JPA的执行过程


     

六.JPA的persistence.xml

一个持久化单元可以创建一个EntityManagerFactory.

 

<?xml version="1.0" encoding="UTF-8"?>  
  
<persistence version="1.0"  
xmlns:persistence="http://java.sun.com/xml/ns/persistence"  
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_1_0.xsd ">  
  
<!--    
     Name属性用于定义持久化单元的名字 (name必选,空值也合法);   
     transaction-type 指定事务类型(可选)    
-->  
<persistence-unit name="unitName" transaction-type="JTA">  
  
   <!-- 描述信息.(可选) -->  
   <description> </description>  
  
   <!-- javax.persistence.PersistenceProvider接口的一个实现类(可选) -->  
   <provider>   </provider>  
  
   <!-- Jta-data-source和 non-jta-data-source用于分别指定持久化提供商使用的JTA和/或non-JTA数据源的全局JNDI名称(可选) -->  
   <jta-data-source>java:/MySqlDS</jta-data-source>  
   <non-jta-data-source> </non-jta-data-source>  
  
   <!-- 声明orm.xml所在位置.(可选) -->  
   <mapping-file>product.xml</mapping-file>  
  
   <!-- 以包含persistence.xml的jar文件为基准的相对路径,添加额外的jar文件.(可选) -->  
   <jar-file>../lib/model.jar</jar-file>  
  
   <!-- 显式列出实体类,在Java SE 环境中应该显式列出.(可选) -->  
   <class>com.domain.User</class>  
   <class>com.domain.Product</class>  
  
   <!-- 声明是否扫描jar文件中标注了@Enity类加入到上下文.若不扫描,则如下:(可选) -->  
   <exclude-unlisted-classes/>  
  
   <!--   厂商专有属性(可选)   -->  
   <properties>  
    <!-- hibernate.hbm2ddl.auto= create-drop / create / update -->  
    <property name="hibernate.hbm2ddl.auto" value="update" />  
    <property name="hibernate.show_sql" value="true" />  
   </properties>  
  
</persistence-unit>  
  
</persistence>

 

 

七.JPA实体的基本元数据(注解)




 

八.JPA实体状态

<!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:AllowPNG/> </o:OfficeDocumentSettings> </xml><![endif]-->



 


 

九.JPA的实体管理器
实体管理器(EntityManager)主要负责对JPA实体进行管理。JPA通过不同的实体管理器,可以J2ee环境、J2se环境独立运行。在两种不同的环境中,获取实体管理器是有区别的。因此实体管理器有如下两种。


1  应用程序托管的实体管理器
应用托管的EntityManager对象,程序员需要手动地控制它的释放和连接、手动地控制事务等。但这种获得应用托管的EntityManager对象的方式,不仅可以在EJB容器中应用,也可以使JPA脱离EJB容器,而与任何的Java 环境集成,比如说Web容器、J2SE环境等。所以从某种角度上来说,这种方式是JPA能够独立于EJB环境运行的基础。


l    在J2SE环境中获取EntityManager

EntityManagerFactory emf = Persistence.createEntityManagerFactory("JPAPOCPU");
EntityManager em = emf.createEntityManager();
em.close();

 
注:JPAPOCPU为persistence.xml的persistence-unit name。使用完EntityManager要手动关闭。



l    在web环境中获取EntityManager

@PersistenceUnit(unitName=" JPAPOCPU ")
   private EntityManagerFactory emf;
 EntityManager em = emf.createEntityManager();

 
注:通过注解的方式在EJB sessionbean中得到EntityManagerFactory,然后从实体工厂中得到EntityManager。

 

 

  • 大小: 84.6 KB
  • 大小: 159.6 KB
  • 大小: 149.8 KB
  • 大小: 121 KB
  • 大小: 32.8 KB
分享到:
评论

相关推荐

    JPA入门(一)

    **JPA入门(一)** Java Persistence API(JPA)是Java平台上的一个标准,用于对象关系映射(ORM),它允许开发人员使用面向对象的编程模型来操作数据库。这篇入门教程将帮助初学者理解JPA的基本概念和用法。 **1....

    JPA从入门到精通

    jpa从入门到放弃,你值得拥有!!!!!

    Spring Data JPA从入门到精通

    'SpringDataJPA从入门到精通'以SpringBoot为技术基础 从入门到精通 由浅入深地介绍SpringDataJPA的使用。有语法 有实践 有原理剖析。'SpringDataJPA从入门到精通'分为12章 内容包括整体认识JPA、JPA基础查询方法、...

    spring data jpa入门实例

    【Spring Data JPA 入门实例】 Spring Data JPA 是 Spring 框架的一个模块,它简化了数据库访问层(DAO)的开发,通过提供自动化的 Repository 实现,使得开发者无需编写大量的 CRUD(创建、读取、更新、删除)代码...

    spring Data Jpa入门

    Spring Framework对JPA的支持本身就很强大,我们不用理会EntityManager的创建,事务处理等等.Spring又进步了,只需要声明一下方法接口,Spring Data JPA可以帮你完成数据访问层的实现代码,开发者把更多的心思放在业务...

    Spring Data JPA入门项目02

    在"Spring Data JPA入门项目02"中,你将学习如何在实际项目中应用这些概念,创建一个用户管理应用,其中包括用户排序和分页功能。通过对`usermanage1_2`这个文件的学习,你可以了解到如何配置Spring Data JPA,创建...

    JPA从入门到精通 推荐

    JPA从入门到精通 推荐

    spring data jpa 入门例子

    Spring Data JPA是Spring框架的一个模块,用于简化Java Persistence API(JPA)的使用,它提供了数据访问的抽象层,让开发者能够以更简洁的方式与数据库进行交互。本入门例子将帮助你理解并掌握Spring Data JPA的...

    Spring Data JPA入门项目01

    在这个"Spring Data JPA入门项目01"中,我们将探讨如何利用Spring Data JPA来实现基本的CRUD(创建、读取、更新和删除)功能。 首先,我们需要在项目中引入Spring Data JPA的相关依赖。这通常在Maven或Gradle的配置...

    Spring Data JPA 入门例子极简代码

    **Spring Data JPA 入门详解** Spring Data JPA 是 Spring 框架的一个模块,它简化了数据库访问,提供了一种声明式的方式来处理数据访问层的 CRUD(创建、读取、更新、删除)操作。它与 Java Persistence API (JPA)...

    hibernate jpa 入门案例依赖jar

    本篇文章将深入探讨Hibernate JPA入门案例所需的依赖,以及如何配置MySQL驱动。 首先,我们需要理解Hibernate和JPA的关系。Hibernate是最初的ORM框架,提供了全面的功能来处理数据库交互。而JPA是Java EE的一部分,...

    事物JPA入门

    **事物(Transaction)JPA 入门** Java Persistence API(JPA)是Java平台上的一个标准,用于管理和持久化Java对象到关系数据库。它提供了一种面向对象的方式来处理数据库操作,使得开发人员可以避免直接编写SQL,...

    JSF+JPA入门开发示例

    在"JSF+JPA入门开发示例"中,你可能会学习到以下关键知识点: 1. **JSF生命周期**:JSF组件有六个主要阶段,包括恢复视图、应用请求值、处理验证、更新模型值、调用应用程序和渲染响应。理解每个阶段的功能对于调试...

    JPA快速入门初步(myeclipse)

    在"JPA快速入门初步(myeclipse)"中,我们将学习如何在MyEclipse中设置JPA项目,理解基本的JPA概念,以及如何使用注解来定义实体和映射数据库表。 1. **JPA基础概念**: - **实体(Entity)**: 表示数据库中的表...

Global site tag (gtag.js) - Google Analytics