在项目中我们公司用的持久化语言是JPA,周五为了给同事们详细的讲解JPA的相关知识,我写了一个大概提纲,和网友一起分享!
1、 JPA简介—语言JPQL
JPA(Java Persistence API)作为Java EE 5.0平台标准的ORM规范,将得到所有Java
EE服务器的支持。Sun这次吸取了之前EJB规范惨痛失败的经历,在充分吸收现
有ORM框架的基础上,得到了一个易于使用、伸缩性强的 ORM规范。从目 前的
开发社区的反应上看,JPA受到了极大的支持和赞扬,JPA作为ORM领域标准化
整合者的目标应该不难实现。
JPA由EJB 3.0软件专家组开发,作为 JSR-220实现的一部分。但它不囿于EJB
3.0,你可以在 Web应用、甚至桌面应用中使用。JPA的宗旨是为POJO提供持久
化标准规范,由此可见,经过这几年的实践探索,能够脱离容器独立运行,方便
开发和测试的理念已经深入人心了。
JPA包括以下 3方面的技术:
(1)ORM映射元数据,JPA支持XML和JDK 5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中;
(2)、JPA 的API,用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者从繁琐的JDBC和SQL代码中解脱出来。
(3)、查询语言,这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。
重要的API
JavaEE 5.0中所定义的JPA接口个数并不多,它们位于javax.persistence和
javax.persistence.spi两个包中。 javax.persistence包中大部分API都是注解类,除此之
外还包括EntityManager、Query等持久化操作接口。
EntityManager---实体对象由实体管理器进行管理,JPA使用javax.persistence.EntityManager代表实体管理器。
EntityManager的一些主要的接口方法:
(1)void persist(Object entity) -----store()
(2)void remove(Object entity)------remove()
(3)void flush() -----flush()
JPA使用javax.persistence.Query接口代表一个查询实例,接口方法:
(1)Object getSingleResult():执行SELECT查询语句,并返回一个结果;
(2)List getResultList() :执行SELECT查询语句,并返回多个结果;
(3)Query setParameter(int position, Object value):通过参数位置号绑定查询语句中的
参数,如果查询语句使用了命令参数,则可以使用Query setParameter(String name,
Object value)方法绑定命名参数;
(4)Query setMaxResults(int maxResult):设置返回的最大结果数;
(5)int executeUpdate():如果查询语句是新增、删除或更改的语句,通过该方法执行
更新操作;
以下是JPA中使用的主要组件:
(1) Persistence: javax.persistence.Persistence类包含静态方法用于获得EntityManagerFactory对象。
(2) EntityManagerFactory: javax.persistence.EntityManagerFactory类是创建EntityManager的工厂类。
(3) EntityManager: javax.persistence.EntityManager是应用中主要使用的接口,它主要用于管理持久对象,也用于创建Query 接口。
(4) Entity。Entity用于封装持久对象。
(5) EntityTransaction: EntityTransaction 用于封装事务,javax.persistence.EntityTransaction和EntityManager之间是一对一的关系。
(6) Query: javax.persistence.Query接口用于持久对象的查询。它支持Java Persistence Query Language (JPQL) 和 Structured Query Language (SQL)。
(7) PersistenceException: JPA异常体系的根是PersistenceException,它继承于RuntimeException。OpenJPA中抛出的异常都实现了org.apache.openjpa.util.ExceptionInfo接口,用于提供额外的信息。
2、 OpenJPA与JPA的关系
在OpenJPA中大量使用了generic和annotation,因此需要使用1.5以上版本的JDK。
JPA的总体思想和现有 Hibernate、TopLink,JDO等ORM框架大体一致。目前Hibernate 3.2、TopLink 10.1.3以及OpenJpa都提供了JPA的实现。
3、 OpenJPA在项目中的应用
(1)、引入的jar包有:openjpa-1.2.1.jar、geronimo-jpa_3.0_spec-1.0.jar、geronimo-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
分享到:
相关推荐
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 框架从数据库中一次性获取 50 个连续的实体标识缓存起来,当下一次应用程序需要获取实体标识时,OpenJPA 将首先检测缓存中是否存在实体标识,如果存在,Open...
OpenJPA OpenJPA 是 Apache 组织提供的开源项目,它实现了 EJB 3.0 中的 JPA 标准,为开发者提供功能强大、使用简单的持久化数据管理框架。OpenJPA 封装了和关系型数据库交互的操作,让开发者把注意力集中在编写...
openJPA官方手册,openJPA官方手册openJPA官方手册
OpenJPA API 文档 chm格式
Open JPA2 employee 简单例子
自己用openjpa些的一个基于web 的例子
Spring中使用OpenJPA源代码 博文链接:https://lxy19791111.iteye.com/blog/184997
jsf 入门知识 ,jsf标签,jsf与openJpa整合,jsf与Spring整合
JPA Overview and OpenJPA Reference Guide
Spring MVC+OpenJPA框架,只是个框架哦
OpenJPA OpenJPA 是 Apache 组织提供的开源项目,它实现了 EJB 3.0 中的 JPA 标准,为开发者提供功能强大、使用简单的持久化数据管理框架。
Openjpa2.2+Mysql+Maven+Servlet+JSP 博客源码: http://blog.csdn.net/shenhonglei1234/article/details/10394379
Apache OpenJPA-自述文件 前言 感谢您下载此版本的Apache OpenJPA。 Apache OpenJPA是Java Persistence API规范的实现。 执照 此存储库的内容已根据Apache License 2.0 许可 更多信息 可以在openjpa-project子目录...
OpenJPA 是 Apache 组织提供的开源项目,它实现了 EJB 3.0 中的 JPA 标准,为开发者提供功能强大、使用简单的持久化数据管理框架。OpenJPA 封装了和关系型数据库交互的操作,让开发者把注意力集中在编写业务逻辑上。...
JPA规范要求对实体对象...OpenJPA支持两种增强 方法,但强烈建议使用字节码编织增强。以下“ 实体增强” 页面包括有关两种增强类型的更多详细信息,以及有关如何在ANT,Maven和Eclipse环境中设置构建时间增强的示例。
本文是 使用 Apache OpenJPA 开发 EJB 3.0 应用系列 的第五部分,介绍在 OpenJPA 中如何自动生成实体的唯一标识,包括使用容器自动生成实体标识,借助于数据库的自动编号、序列号、数据库表等技术自动生成实体标识等...
openjpa相关jar包,开发必备,希望对各位有帮助
NULL 博文链接:https://laoli5290.iteye.com/blog/2088341
包括TOPLink JPA,Hibernate JPA,Open Jpa,jpa批注