正 文

解析J2EE1.4新特性(4) - EJB2.1的新特性


www.7dspace.com  更新日期:2006-2-11 12:01:28  七度空间


三)EJBQL的提高

EJB 2.1也包括两项对于EJBQL的提高,即order by语句的加入和一些新函数。

1、order by语句

以前的EJB规格描述中并没有包含order by语句,而在EJB 2.1中,EJBQL已经开始支持order by语句的应用了。比如说开发人员可以设计一个数据库用户信息查询,并将查询结果按照用户的系统ID排序:

SELECT OBJECT(I)

FROM Users as I

ORDER BY UID

order by语句通常会写在EJB远程或本地接口的查找(finder)或选择(select)语句中。通常来说在order by语句的标识符(identifier)都是路径表达式(path expression),并以容器管理的持久性变量结束。这里需要说明的是,order by语句只能应用于相关ejb的容器管理的持久性变量。在order by语句中,开发人员也可以使用DESC或ASC来指定排列结果时下降或上升的次序,其中上升次序是缺省值。

开发人员也可以在select方法中,即选出持久性变量时使用order by语句。在下面的例子中,该查询选出了具有特定住址的用户,并按照姓名排序:

SELECT DISTINCT I.customer.name

FROM Customer as I

WHERE I.city=NanJing

ORDER BY I.customer.name

当一个EJBQL查询选出持续性变量时,order by值应用于在该选出语句(select)出现的持续性变量。比如说,在上例中,开发人员无法先选出用户的姓名,而是使用用户的年龄进行排序。

2.新功能

新的EJBQL对于where语句和select语句都加入了一些新的函数。在where语句中,除了已有的concat,substring,locate,length,abs和sqrt函数,EJB2.1加入了mod函数。

EJB 2.1也同时向select语句中加入了5个新的集合类函数:AVG,COUNT,MAX,MIN和SUM,这些函数的功能都和SQL-92中相应的定义类似。不同的是,AVG和SUM只作用于数字类型,而COUNT,MAX和MIN函数则作用于任意一个容器管理的持久性变量,包括日期类型和字符串类型。Count则可以应用于一个容器管理的持久性变量或是EJB标识符。

比方说,我们可以定义一个查询,以得到所有住在南京的用户。这里COUNT函数直接地作用在标识符上,而无需OBJECT()操作:

    SELECT COUNT(C)

    FROM Customer as C

    WHERE C.city=NanJing

下面的例子中,我们可以得到用户工资的总和:

    SELECT SUM(C.totalsalary)

    FROM Customer as C

    WHERE C.city=NanJing

以上我们简要地介绍了EJB 2.1中的新特性,包括Web服务、消息驱动bean和  EJBQL等方面的提高,有兴趣的读者也可以参照最新的EJB规范描述来进一步研究和实践。

作者:务实,多年从事J2EE网站及应用系统项目的开发和应用。

4页,页码:[1] [2] [3] [4] 

上一篇:J2EE与.NET的Web服务
下一篇:解析J2EE1.4新特性(3)-JDBC3.0的新特性
标题:解析J2EE1.4新特性(4) - EJB2.1的新特性 作者:务实 来源:开发者在线
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐