网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.Java基础学习:functor的实现.
.一个关于抛出异常的程序代码的分.
.Struts入门--从原理到安装及实例.
.Spring1.2rc1中jmx支持的一些答疑.
.切勿忽视软件集成中的软知识.
.Weblogic Server 8.1 环境下Web布.
.JAVA小画板(应用程序).
.我为什么没有使用Spring.
.Java中finalize()的另类用法(1).
.看看你能过关吗-J2EE面试题集锦.
.Java应用:编写高级JavaScript应.
.无线开发:如何使用kxml解析WAP.
.JAVA:附加码生成器(图片).
.Java 项目中应用Subversion配置与.
.Javascript实例教程(18) 数组.
.具有 Applet & Application 双重.
.java多线程数据库操作.
.深入浅出基于Java的代理设计模式.
.datagrid数据列/模板列/按钮事件.
.使用Decorator模式实现日期选择组.

JPA重整ORM山河

发表日期:2008-1-5


1.JPA概述 

JPA(Java Persistence API)作为Java EE 5.0平台标准的ORM规范,将得到所有Java EE服务器的支持。Sun这次吸取了之前EJB规范惨痛失败的经历,在充分吸收现有ORM框架的基础上,得到了一个易于使用、伸缩性强的ORM规范。从目前的开发社区的反应上看,JPA受到了极大的支持和赞扬,JPA作为ORM领域标准化整合者的目标应该不难实现。 

JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中,图 1很好地描述了JPA的结构:

JPA重整ORM山河(图一)

Sun引入新的JPA ORM规范出于两个原因:其一,简化现有Java EE和Java SE应用的对象持久化的开发工作;其二,Sun希望整合对ORM技术,实现天下归一。 

JPA由EJB 3.0软件专家组开发,作为JSR-220实现的一部分。但它不囿于EJB 3.0,你可以在Web应用、甚至桌面应用中使用。JPA的宗旨是为POJO提供持久化标准规范,由此可见,经过这几年的实践探索,能够脱离容器独立运行,方便开发和测试的理念已经深入人心了。目前Hibernate 3.2、TopLink 10.1.3以及OpenJpa都提供了JPA的实现。

JPA的总体思想和现有Hibernate、TopLink,JDO等ORM框架大体一致。总的来说,JPA包括以下3方面的技术: 

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

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

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

2.实体对象 

访问数据库前,我们总是要设计在应用层承载数据的领域对象(Domain Object),ORM框架将它们持久化到数据库表中。为了方便后面的讲解,我们用论坛应用为例,建立以下的领域对象:

JPA重整ORM山河(图二)

Topic是论坛的主题,而PollTopic是调查性质的论坛主题,它扩展于Topic,一个调查主题拥有多个选项PollOption。这三个领域对象很好地展现了领域对象之间继续和关联这两大核心的关系。这3个领域对象将被映射到数据库的两张表中:

JPA重整ORM山河(图三)

其中,Topic及其子类PollTopic将映射到同一张t_topic表中,并用topic_type字段区分两者。而PollOption映射到t_polloption中。

具有ORM元数据的领域对象称为实体(Entity),按JPA的规范,实体具备以下的条件: 

必须使用javax.persistence.Entity注解或者在XML映射文件中有对应的元素; 

必须具有一个不带参的构造函数,类不能声明为final,方法和需要持久化的属性也不能声明为final;

假如游离状的实体对象需要以值的方式进行传递,如通Session bean的远程业务接口传递,则必须实现Serializable接口; 

需要持久化的属性,其访问修饰符不能是public,它们必须通过实体类方法进行访问。

进入讨论组讨论。

3.使用注解元数据 

基本注解 

首先,我们对Topic领域对象进行注解,使其成为一个合格的实体类: 

代码清单1:Topic实体类的注解

package com.baobaotao.domain;



import javax.persistence.Column;

import javax.persistence.DiscriminatorColumn;

import javax.persistence.DiscriminatorType;

import javax.persistence.DiscriminatorValue;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.Inheritance;

import javax.persistence.InheritanceType;

import javax.persistence.Temporal;

import javax.persistence.TemporalType;


上一篇:实例讲解JAVA中“类”的应用 人气:600
下一篇:不再是苦差事 用Eclipse简化开发 人气:550
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐