`
kuangxiangly
  • 浏览: 28017 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

OpenJPA的基础

阅读更多

       在项目中我们公司用的持久化语言是JPA,周五为了给同事们详细的讲解JPA的相关知识,我写了一个大概提纲,和网友一起分享!

1、  JPA简介—语言JPQL

JPA(Java Persistence API)作为Java EE 5.0平台标准的ORM规范,将得到所有Java

EE服务器的支持。Sun这次吸取了之前EJB规范惨痛失败的经历,在充分吸收现

ORM框架的基础上,得到了一个易于使用、伸缩性强的 ORM规范。从目 前的

开发社区的反应上看,JPA受到了极大的支持和赞扬,JPA作为ORM领域标准化

整合者的目标应该不难实现。

JPAEJB 3.0软件专家组开发,作为 JSR-220实现的一部分。但它不囿于EJB

3.0,你可以在 Web应用、甚至桌面应用中使用。JPA的宗旨是为POJO提供持久

化标准规范,由此可见,经过这几年的实践探索,能够脱离容器独立运行,方便

开发和测试的理念已经深入人心了。

JPA包括以下 3方面的技术: 

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

2)、JPA API,用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者从繁琐的JDBCSQL代码中解脱出来。 

3)、查询语言,这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。

 

 重要的API

JavaEE 5.0中所定义的JPA接口个数并不多,它们位于javax.persistence

javax.persistence.spi两个包中。 javax.persistence包中大部分API都是注解类,除此之

外还包括EntityManagerQuery等持久化操作接口。

EntityManager---实体对象由实体管理器进行管理,JPA使用javax.persistence.EntityManager代表实体管理器。

 

EntityManager的一些主要的接口方法: 

1void persist(Object entity) -----store()

2void remove(Object entity)------remove()

3void flush() -----flush()

 

JPA使用javax.persistence.Query接口代表一个查询实例,接口方法:

1Object getSingleResult():执行SELECT查询语句,并返回一个结果; 

2List getResultList() :执行SELECT查询语句,并返回多个结果;   

3Query setParameter(int position, Object value):通过参数位置号绑定查询语句中的

参数,如果查询语句使用了命令参数,则可以使用Query setParameter(String name,

Object value)方法绑定命名参数;   

4Query setMaxResults(int maxResult):设置返回的最大结果数; 

5int executeUpdate():如果查询语句是新增、删除或更改的语句,通过该方法执行

更新操作;   

 

   以下是JPA中使用的主要组件:

(1) Persistence: javax.persistence.Persistence类包含静态方法用于获得EntityManagerFactory对象。

(2) EntityManagerFactory: javax.persistence.EntityManagerFactory类是创建EntityManager的工厂类。

(3) EntityManager: javax.persistence.EntityManager是应用中主要使用的接口,它主要用于管理持久对象,也用于创建Query 接口。

(4) EntityEntity用于封装持久对象。

(5) EntityTransaction: EntityTransaction 用于封装事务,javax.persistence.EntityTransactionEntityManager之间是一对一的关系。

(6) Query: javax.persistence.Query接口用于持久对象的查询。它支持Java Persistence Query Language (JPQL) Structured Query Language (SQL)

(7) PersistenceException: JPA异常体系的根是PersistenceException,它继承于RuntimeExceptionOpenJPA中抛出的异常都实现了org.apache.openjpa.util.ExceptionInfo接口,用于提供额外的信息。

 

2、  OpenJPAJPA的关系

OpenJPA中大量使用了genericannotation,因此需要使用1.5以上版本的JDK

JPA的总体思想和现有 HibernateTopLinkJDOORM框架大体一致。目前Hibernate 3.2TopLink 10.1.3以及OpenJpa都提供了JPA的实现。

 

 

3、  OpenJPA在项目中的应用

(1)、引入的jar包有:openjpa-1.2.1.jargeronimo-jpa_3.0_spec-1.0.jargeronimo-jta_1.1_spec-1.1.jar;

(2)、为POJO写映射文件*.orm.xml

(3)、在src下面的META-INF下面的persistence.xml中将POJO的映射文件添加进去

       (4)void persist(Object entity) -----store()

void remove(Object entity)------remove()

            void flush() -----flush()

     getNamedQuery(String queryName)---createNamedQuery()

 getNativeQuery(String queryString)--- createNativeQuery()

 getDynamicQuery(String queryString)--- createQuery()

 getNamedUpdate(String queryName)---createNamedQuery()

 

4、  推荐资料

  Apache OpenJPA 2.0 User's Guide.pdf

  ejb-3_0-pfd-spec-persistence.pdf

 

分享到:
评论
1 楼 andey007518 2011-03-09  
多谢了,如果能有个demo,能够快速的看下,岂不是更好,尤其涉及onetomany,manytoone,单向或者双向关系,~~

相关推荐

    Apache OpenJPA 2.1 User's Guide

    OpenJPA is Apache's implementation of Sun's Java Persistence 2.0 API (JSR-317 JPA 2.0) specification for the transparent persistence of Java objects. This document provides an overview of the JPA ...

    openjpa范例及实例工程

    默认情况下,当应用程序第一次获取实体标识时,OpenJPA 框架从数据库中一次性获取 50 个连续的实体标识缓存起来,当下一次应用程序需要获取实体标识时,OpenJPA 将首先检测缓存中是否存在实体标识,如果存在,Open...

    OpenJPA 2.2.1 API (CHM格式)

    OpenJPA  OpenJPA 是 Apache 组织提供的开源项目,它实现了 EJB 3.0 中的 JPA 标准,为开发者提供功能强大、使用简单的持久化数据管理框架。OpenJPA 封装了和关系型数据库交互的操作,让开发者把注意力集中在编写...

    openJPA官方手册

    openJPA官方手册,openJPA官方手册openJPA官方手册

    OpenJPA API 文档 chm格式

    OpenJPA API 文档 chm格式

    Open JPA2 employee 简单例子

    Open JPA2 employee 简单例子

    openjpa 写的一个例子

    自己用openjpa些的一个基于web 的例子

    Spring中使用OpenJPA

    Spring中使用OpenJPA源代码 博文链接:https://lxy19791111.iteye.com/blog/184997

    jsf、openJpa学习

    jsf 入门知识 ,jsf标签,jsf与openJpa整合,jsf与Spring整合

    openjpa-manual

    JPA Overview and OpenJPA Reference Guide

    Spring MVC+OpenJPA框架

    Spring MVC+OpenJPA框架,只是个框架哦

    Openjpa手册

    OpenJPA OpenJPA 是 Apache 组织提供的开源项目,它实现了 EJB 3.0 中的 JPA 标准,为开发者提供功能强大、使用简单的持久化数据管理框架。

    Openjpa2.2+Mysql+Maven+Servlet+JSP source code

    Openjpa2.2+Mysql+Maven+Servlet+JSP 博客源码: http://blog.csdn.net/shenhonglei1234/article/details/10394379

    openjpa:Apache OpenJPA

    Apache OpenJPA-自述文件 前言 感谢您下载此版本的Apache OpenJPA。 Apache OpenJPA是Java Persistence API规范的实现。 执照 此存储库的内容已根据Apache License 2.0 许可 更多信息 可以在openjpa-project子目录...

    apache-openjpa-2.2.1-source

    OpenJPA 是 Apache 组织提供的开源项目,它实现了 EJB 3.0 中的 JPA 标准,为开发者提供功能强大、使用简单的持久化数据管理框架。OpenJPA 封装了和关系型数据库交互的操作,让开发者把注意力集中在编写业务逻辑上。...

    apache-openjpa-3.1.0-binary.zip

    JPA规范要求对实体对象...OpenJPA支持两种增强 方法,但强烈建议使用字节码编织增强。以下“ 实体增强” 页面包括有关两种增强类型的更多详细信息,以及有关如何在ANT,Maven和Eclipse环境中设置构建时间增强的示例。

    openjpa实体标识的生成策略

    本文是 使用 Apache OpenJPA 开发 EJB 3.0 应用系列 的第五部分,介绍在 OpenJPA 中如何自动生成实体的唯一标识,包括使用容器自动生成实体标识,借助于数据库的自动编号、序列号、数据库表等技术自动生成实体标识等...

    openjpa jar

    openjpa相关jar包,开发必备,希望对各位有帮助

    Spring和openJPA集成

    NULL 博文链接:https://laoli5290.iteye.com/blog/2088341

    JPA教程,包括TOPLink JPA,Hibernate JPA,Open Jpa,jpa批注

    包括TOPLink JPA,Hibernate JPA,Open Jpa,jpa批注

Global site tag (gtag.js) - Google Analytics