新闻资讯

新闻资讯

实时气象信息

气象信息

今日明日油价

明日油价

航班起降信息

航班信息

TTC动态时刻表

TTC时刻表

超市特价信息

超市特价

商场特价信息

商场特价

中外食谱

中外食谱

技术IT

技术IT

中外名画

中外名画

超强游戏

超强游戏

幽默笑话

幽默笑话

漫画卡通

漫画卡通


使用EJB3 Java 持久化API来标准化Java的持久化操作

主编发表于2010年3月14日 · 发表评论
归档于: J2EE, 技术IT 

持久化对于大部分企业应用来说都是至关重要的,因为它们需要访问关系数据库,例如Oracle Database 10g。如果你正使用java开发应用程序,你可能会负责一些很乏味的工作,例如使用JDBC和SQL来编写更新或者读取数据库的代码。在过去的几年中,一些对象-关系映射框架,例如Oracle TopLink和JBoss Hibernate,已经非常流行了,因为它们简化了持久化操作,将Java开发人员从无聊琐碎的JDBC代码中解放出来,使他们可以更加关注业务逻辑。一些Java标准,例如EJB2.x中的容器管理持久化的实体bean也试图解决持久化问题,但是它们的努力显得不是很成功。

尽管有不少选择可以用来来构建应用程序的持久化层,但是并没有一个统一的标准可以用在Java EE环境和Java SE环境中。EJB3Java持久化API为我们带来了好消息,作为EJB 3.0规范(JSR-220)中的一部分,它标准化了Java平台下的持久化API。JSR-220已经被O-R Mapping软件生产商广泛支持,例如TopLink 和 Hibernate,同时它还被一些应用服务器生产商和JDO生产商所支持。EJB3规范为Java企业应用构建持久化层提供了一个强制性的选择。

在这篇文章中,笔者将会使用一个简单的对象模型作为例子来介绍EJB3 Java 持久化 API。

版权声明:任何获得Matrix授权的网站,转载时请务必保留以下作者信息和链接
作者:Debu Panda;shenpipi
原文:http://www.onjava.com/pub/a/onjava/2006/05/17/standardizing-with-ejb3-java-persistence-api.html
Matrix:http://www.matrix.org.cn/resource/article/44/44549_EJB3.html
关键字:EJB3;Java 持久化

领域模型

当你构建一个企业应用时,你首先设计需要持久化到数据库中的领域模型。然后,你需要和数据库设计人员一起设计好数据库结构。领域模型是持久化对象或者实体的代表。一个实体可以是一个人,一个地方,或者任何其他你想要存储的数据。它同时包含了数据和行为。一个rich领域模型具有所有的OO的特征,例如继承和多态(inheritance and polymorphism)。
我们作为示例使用的这个简单的领域模型如下,部门(Department)和雇员(Employee)实体之间具有双向的一对多关系,而全职员工(FullTime)和承包工(Contractor)实体都是从雇员实体继承而来。

图 1. 示例领域对象模型

O-R映射框架和EJB3 JPA的基础

如果你使用过Oracle TopLink这样的O-R映射框架构建过应用程序的持久化层,那么你会注意到每个持久化框架都会提供3种机制

1. 声明性的O-R 映射方法。这种方法,叫做O-R映射元数据,使得你可以将一个对象映射到数据库中的一个或者多个表。大部分的O-R映射框架都使用XML来存储O-R映射的元数据。

2. 用来操作实体的API(例如,来执行CRUD操作)。API让你用来持久化,获取,更新或者删除对象。基于O-R映射元数据和API的使用,O-R映射框架代替你来完成各种数据库操作。API将你从繁琐的JDBC和SQL代码中解救出来。

3. 一种查询语言来获取对象。这是持久化操作的很重要的一个方面,因为不合适的SQL语句会使得你的数据库操作变慢。这种查询语言避免了在应用程序中混杂大量SQL语句的现象。

EJB3 Java 持久化API标准化了Java平台下的持久化操作,它提供一种标准的O-R映射机制,一组EntityManager API来进行CRUD操作,以及一种扩展的EJB-QL语言来获取实体。笔者将在分别讨论这3个方面。

元数据标注

Java SE 5.0 引入了元数据标注。Java EE的所有组件,包括 EJB3 JPA,都大量使用了元数据标注来简化企业Java应用的开发。想要了解更多的元数据标注方面的知识,请参阅Kyle Downey 写的Bridging the Gap: J2SE 5.0 Annotations文章。在EJB3 JPA中,元数据可以用来定义对象,关系,O-R映射以及持久化上下文(Context)的注入。JPA同样提供了使用XML描述符来提供持久化元数据的方法。而笔者则会重点讲述使用标注的方式,因为这使得开发变得更加简单。但是,在产品部署阶段,你或许会倾向于使用XML描述符,你可以使用XML描述符来覆盖标注定义的持久化行为。

在JPA中将O-R映射标准化

定义持久化对象:实体
一个实体是一个轻量级的领域对象


本文所属类别其他文章

技术IT:

♦ Google林斌:HTML5将颠覆Web应用
♦ IBM安全报告被Google友情纠正数据
♦ 微软必应吸引玩家 推《魔兽世界》搜索
♦ SYBASE ASE 15.5六大新特性揭秘
♦ IBM世博会上实践“智慧的城市”
♦ IBM:有一双发现用户的眼睛
♦ 开源技术的未来--多领域迎接突破
♦ 浅析SQL Server中如何使用CLR调用.NET
♦ eWeek:亚马逊对谷歌形成挑战的十大原因
♦ 嵌入式开发 硬件软件何者更重要?
♦ 新广告推出 IBM在10月7日有大动作?
♦ 谷歌收购背后:游戏是饵 意在移动互联网
♦ 如何查找SQL Server自增ID不连续记录?
♦ 如何在WordPress的wp-admin界面只显示登录用户的文章?
♦ ASP.NET页面刷新数据重复提交解决方案
♦ 10个非技术人员无法理解的软件概念
♦ 纽约时报:谷歌和甲骨文的开源战争
♦ IBM:智慧信息架构“从无到有”五步论
♦ 编程语言的发展趋势:声明式动态并发
♦ “行”“列”对比 Sybase IQ酷在哪里?
♦ 红帽任命美军退役上将为董事会主席
♦ 博看文思谢伟:基于iPhone应用开发实践
♦ 马万铮:手机网络Android应用开发实践
♦ 刘斌:百度单机及分布式数据库应用实践
♦ 胡研:移动应用软件统一化模型研究设计
♦ 2010 SACC王宝:架构没有最好只有最合适
♦ 巧妙SQL Server设置 备份状态邮件通知
♦ 2010 SACC会场 惊现最小的系统架构师
♦ 细数Infobright的相关数据类型
♦ 自动以管理员身份运行.NET程序详解
♦ 达梦数据库参加第三届中国软件渠道大会
♦ 系统架构师大会开幕 总编分享云报告
♦ 胡研:构建服务于开发商的统一化模型
♦ 马万铮:移动互联网常见问题及解决方法
♦ 移动互联网未来趋势是贴近和还原
♦ 谢伟:做iPhone开发需要发挥个人想象力
♦ 博看文思谢伟:基于iPhone应用开发实践
♦ 马万铮:手机网络Android应用开发实践
♦ 刘斌:百度单机及分布式数据库应用实践
♦ 胡研:移动应用软件统一化模型研究设计
♦ 2010 SACC王宝:架构没有最好只有最合适
♦ 巧妙SQL Server设置 备份状态邮件通知
♦ 2010 SACC会场 惊现最小的系统架构师
♦ 细数Infobright的相关数据类型
♦ 自动以管理员身份运行.NET程序详解
♦ 达梦数据库参加第三届中国软件渠道大会
♦ 系统架构师大会开幕 总编分享云报告
♦ 梁建锋:海量用户游戏框架构思与实践
♦ SQL Server 2008数据库复制且同步备份
♦ 徐超:F5云计算应用交付平台新方案
♦ 调查结果:Android用户更愿意点击广告
♦ Android平台动力不断
♦ ASP.NET MVC路由匹配检测组件方法解析
♦ 张旭:基于大规模集群的运维架构设计
♦ 蔡文胜谈3G门户:Symbian应用应放弃
♦ 中国农业发展银行缘何青睐DB2
♦ Oracle与Google两巨头战争冲击整个硅谷
♦ Adobe更新Web版Photoshop 用户无需注册
♦ 谈谈最近的Oracle与Google之争
♦ 升级成本高 甲骨文遭老客户抛弃的启示
♦ 2010架构师大会 讲师全部来自技术一线
♦ 程序员要有与时俱进的思想意识
♦ 诺基亚命系QT 而非Symbian、Meego
♦ 走进国内顶级Android论坛:机锋网
♦ 《Android平台开发之旅》作者谈Android
♦ 数据挖掘之Intelligent Miner
♦ Silverlight的Action特性应用实例解读
♦ IBM Intelligent Miner解决方案
♦ IBM DB2商业智能在电信行业的成功应用
♦ IBM应对汽车系统的复杂性
♦ IBM嵌入式系统案例
♦ IBM Rational软件介绍
♦ IBM助搜狐构建灵活稳健的内部信息门户
♦ DataStage为ETL过程提供了图形化界面
♦ 数据库中内连接、全连接与左右连接详解
♦ Silverlight自定义控件模板如何管理?
♦ 微软透漏WP7开发路线图 欧洲将最先上市
♦ 微软云首落东莞 低成本剑指中国市场
♦ 开源RBAC产品的利与弊
♦ 谷歌CEO谈未来Android平台的发展
♦ IBM与微软合作:硬软件or软硬件?
♦ IBM中端市场合作战略获成功 将长期执行
♦ 解读微软裁员5000:大象为何急需改变?
♦ Meego时机欠佳 Android不是下一个Linux
♦ Jazz协作支持:下一个发展方向
♦ IBM Jazz统一协同让开发不再孤单
♦ 提高创新力 IBM助力中国银行业智慧转型
♦ Windows Phone 7:真的“不同”了吗?
♦ 基于Silverlight-Caliburn框架六大特性
♦ SQL Server安全管理 恶意攻击自不量力
♦ 微软.NET企业级架构解决方案:业务层
♦ GeForce GT 430将会数周内上市?
♦ 达梦成功中标温州人口信息综合管理系统
♦ 大公司是如何走上开源之路的
♦ 应深入学习的10个Android开源应用项目
♦ 2010年JavaOne大会将于9月举行
♦ 五大免费/开源NAS项目
♦ 微软携手CSIP 提升Dynamics产品操控力
♦ 盘点:最具影响的十大IT收购
♦ 2010系统架构师大会增添移动专场
♦ 梅孝龙:Android平台问题究竟在哪里?
♦ SQL Azure架构分析概述
♦ 谈毅:如何看待Android版本混乱问题
♦ 评论:手机游戏的出路在哪里?
♦ 浅析SQL Server如何链接远程MySQL
♦ VS LightSwitch初体验 定位非专业人员
♦ 谈毅:谷歌统一不了Android3.0的UI界面
♦ MIT为Android智能手机增超级计算能力
♦ 25个令人惊奇的CSS3实验和例子
♦ Ubuntu放弃支持Intel IA64安腾架构
♦ 5件Java性能监控小技巧:应对编程困难
♦ 外媒评论:我的丈夫是个程序员
♦ 大牛对话:万维网已死?
♦ IBM云计算助全球首个3D互联网开发平台
♦ 诺基亚与Android:谁更能抓住用户?
♦ 华为接受印度安全新规提供源代码
♦ 专访微软CIO:Google苹果挑战不足为惧
♦ Linux发行版流行趋势图
♦ 诺基亚收购手机应用分析公司Motally
♦ iPad能否给联通带来一次新机会?
♦ 微软发布SSMA 支持数据库迁移SQL Azure
♦ 越久就越臃肿 Symbian理应速速安乐死
♦ 中国CPU和基础软件90%以上依赖进口
♦ 英特尔宣布将以78.6亿美元收购McAfee
♦ 甲骨文起诉谷歌 微软得渔翁之利
♦ iPhone 4难成中国联通“救命稻草”
♦ 敏捷进行时——专访Scott W. Ambler
♦ PostgreSQL权限提升和拒绝服务漏洞
♦ SQL Azure新特性之数据大容量
♦ 大盘点:2010中国互联网大会十大精彩
♦ Silverlight多项目共享DLL文件方法讨论
♦ 关于ASP.NET MVC表单设计器的简单思路
♦ 英特尔斥巨资收购McAfee 进军软件领域
♦ 阿里巴巴证实其B2B技术部总监溺水身亡
♦ 微软MSN发布深度智能手机BuddyPhone
♦ 微软发布SSMA 支持数据库迁移SQL Azure
♦ 越久就越臃肿 Symbian理应速速安乐死
♦ 中国CPU和基础软件90%以上依赖进口
♦ 英特尔宣布将以78.6亿美元收购McAfee
♦ 甲骨文起诉谷歌 微软得渔翁之利
♦ iPhone 4难成中国联通“救命稻草”
♦ 敏捷进行时——专访Scott W. Ambler
♦ PostgreSQL权限提升和拒绝服务漏洞
♦ 《连线》杂志:Web已死 互联网永生
♦ Ovi减免费用:智能手机回归硬件之争?
♦ 十年程序员 何去何从
♦ 姜饼之后是蜂窝 Android新版本名称曝光
♦ IBM在华推出一体式电子心电图管理系统
♦ 传统应用软件:Android背后的支柱
♦ 详解SQL Azure与SQL Server共性与差异
♦ Oracle 起诉谷歌背后 隐藏的是什么?
♦ 软件从敏捷到超精益开发的10步
♦ 厂商和运营商表态:Android 3.0被误读
♦ IBM XIV助华南电信构建超级邮件系统
♦ Android2.2特性将程序装到卡上是骗局?
♦ 发展有限导致Facebook早期员工大量离职
♦ 兴趣与坚持:程序员从初级到中级
♦ 盘点微软平台上的六大NoSQL数据库
♦ Hunch:Flickr创始人又一个Web2.0奇迹
♦ 苹果主导手机广告市场 Android增长迅猛
♦ 澳统计局将采用IBM软件提高员工协作
♦ iPad不足颇多,Android平板还有机会
♦ 甲骨文PK谷歌背后:开源软件走向何方
♦ IBM助力省农信社数据集中项目
♦ LG公司看好WP7全面超越Android平台
♦ 诺基亚或3年内将MeeGo降至中低端级别
♦ 惊人发现!C#亲Java远离C++
♦ Meego还不是Nokia的那颗救命稻草
♦ IBM的PBC——通透的绩效管理文化
♦ 借助Android平台 探寻谷歌的求索革命
♦ SQL Server配置全攻略 打造SQL最佳性能
♦ 十年的演变:Linux安全的过去与现在
♦ 前瞻:Solaris 11将会带给我们些什么?
♦ VS LightSwitch能否敲开非程序员心门?
♦ 甲骨文告Google侵权一事 令硅谷震惊
♦ Mocha BSM 7.5.0发布 进入“睿智”时代
♦ 浅谈F# 2.0面向.NET Framework运行时
♦ 盘点云时代十大先驱厂商 IBM将登云巅峰
♦ 甲骨文与开源决裂?OpenSolaris被扼杀
♦ 打保密战 甲骨文弃开源项目OpenSolaris
♦ NVIDIA高层称公司未来寄希望于Android
♦ 资深系统管理员给Linux/Unix新人的建议
♦ IBM刀片创新成果推动blade.org生根中国
♦ 预计Windows Phone 7有匹敌Android潜力
♦ 24款让人欲罢不能的免费Linux游戏
♦ Java之父:Java较安全 Solaris前景堪忧
♦ 诺基亚Q2市场份额下降最多 HTC上升最快
♦ 是否应该允许开发人员进入生产环境?
♦ Oracle BPM 11g:让业务人员主导开发
♦ SAP推价值工程计划 帮客户持续产生价值
♦ 常用Java Profiling工具的分析与比较
♦ 快速搞定SQL Server锁定阻塞 远离等待
♦ 智慧的传统医学:IBM的“标准化”中医
♦ 小技巧大能耐 搞定VS2008成功迁移2010
♦ Android会成为下一个Linux?
♦ Meego上网本疯狂体验
♦ Linux 和 Android 不可以合好吗?
♦ Android增语音操作功能可语音发送短信
♦ 惠普通吃:推WebOS和Windows7平板电脑
♦ 最让人郁闷的五种程序注释方式
(请到相应页面或分类阅读全部文章......)


发表评论