分享
 
 
 

Enterprise JavaBeans查询语言(1)

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

Enterprise JavaBeans查询语言(EJB QL)定义了容器治理持续化的finder方法和select方法的查询。作为SQL92的一个子集,EJB QL进行了扩展,它可以使用entity bean的抽象模式中定义的关联。一个EJB QL查询可以跨越封装在同一个EJB JAR文件中的所有相关的entity bean的抽象模式。

你可以在entity bean中部署描述中定义EJB QL查询。典型的情况是,一个工具会将这些查询转换成低层数据存储所使用的查询语言。因为这种转换的存在,使用容器治理持续化的entity bean具有可移植性--它们的代码不受具体的数据存储的类型的影响。

术语

下面列出了本章中用到的一些术语的定义。

1、Abstract schema--抽象模式:一个entity bean的部署描述的一部分,它定义了bean的持续化字段和关联关系。

2、Abstract schema name--抽象模式名:在EJB QL查询中引用的一个逻辑命名。你需要为每个容器治理持续化的entity bean指定一个抽象模式名。

3、Abstract schema type--抽象模式类型:所有的EJB QL表达式都对应一个类型。假如表达式是一个抽象模式名,那么它的类型默认是定义了这个抽象模式名的entity bean的local接口。

4、Backus-Naur Form (BNF)--巴科斯-诺尔范式:一种描述高级语言语法的一种表示法。这一章的语法图表使用了BNF表示法。

5、navigation--跨越:在一个EJB QL表达式中对关联关系的使用。跨越操作符是一个句点。

6、path eXPression--路径表达式:一个跨越到相关entity bean的表达式。

7、persistent field--持续化字段:一个容器治理持续化的entity bean中的一个虚拟字段;它存储在一个数据库中。

8、relationship field--关联字段:一个容器治理持续化的entity bean中的一个虚拟字段;它确定了一个相关的entity bean。

简单的语法

这里简要地描述了EJB QL的语法,这样你可以快速进入下面查询示例的学习。假如你要对此进行更深入的学习,请阅读完整的语法。

一个EJB QL查询由三个子句组成:SELECT子句、FROM子句和WHERE子句,SELECT子句和FROM子句是必选的,而WHERE子句是可选的。下面是一个EJB QL查询的简单BNF定义:

EJB QL :: = select_clause from_clause [where_clause]

ELECT子句定义了对象的类型或查询的返回值。返回类型可是一个local接口、一个remote接口或是一个持续化字段。

FROM子句通过声明一个或多个标识变量定义了查询的范围,这些标识变量可能会在SELECT子句和WHERE子句中被引用。一个标识变量反映了下列元素之一:

1、一个entity bean的抽象模式名

2、一个集合的一个成员,这个集合是一个一对多关系中的多端

WHERE子句是一个限制查询找到的对象或数值的条件表达式。尽管它是可选的,但是绝大多数查询都会有一个WHERE子句。

查询示例

下面的查询来自于RosterApp J2EE应用程序的PlayerEJB entity bean,在第六章中我们对这个应用程序作了介绍。RosterApp中bean之间的关联关系,请参看图6-1。

简单的Finder查询

假如你对EJB QL不熟悉,这些简单的查询将有助于你尽快入门。

示例 1

SELECT OBJECT(p)

FROM Player p

获得的数据:所有队员。

Finder方法: findall()

说明:FROM子句声明了一个名为p的标识变量,其中省略了可选的AS要害字。假如使用了AS要害字,这个子句将是这样的:

FROM Player AS p

Player元素是PlayerEJB entity bean的抽象模式名。因为bean在LocalPlayerHome接口中定义了findall方法,所以这个查询返回的对象具有LocalPlayer类型。

参见: 标识变量

示例 2

SELECT DISTINCT OBJECT(p)

FROM Player p

WHERE p.position = ?1

获得的数据:由finder方法的参数指定位置的队员。

Finder方法: findByPosition(String position)

说明:在一个SELECT子句中,在例如p这样的独立的标识变量前面要加OBJECT要害字。DISTINCT要害字排除了重复的数据。

WHERE子句通过检查队员的position这个PlayerEJB entity bean的持续化字段对获得的队员进行了限制。?1元素表示了了findByPosition方法中的输入参数。

参见: 输入参数, DISTINCT要害字和OBJECT要害字

示例 3

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有