J2EE学习笔记七:EJB查询语言(EJB Query Language)

实体Bean为底层数据库提供了一个面向对象的抽象,同时它还能够创建一些业务方法,通过这些方法可以操作实体Bean中包含的数据。为了提高数据操作的方便性以及效率,J2EE提供了一种类SQL的语言EJB Query Language,缩写为EJB-QL,这就像我们在Hibernate中所使用的HQL(Hibernate Query Language)一样。通过利用EJB-QL,我们可以在实体bean的方法中插入与SQL语法类似的查询,EJB-QL查询的结果通常都是实体bean的引用,可以直接对其进行操作,这样就可以同时利用到SQL和面向对象技术的优点。

在实体bean中使用EJB-QL有两种方式:在实体beanHome接口中使用EJB-QL find方法和在实体beanBean类中使用EJB-QL select方法,其中select方法只能被bean类中的其它方法调用。这里首先只介绍在实体beanHome接口中使用Find方法。

假设有一个EJB应用,它里面包含一个名称为Planet的实体bean,现在我们想在它的Home接口中声明这样一个find方法:它的功能是返回具有指定数量卫星的所有行星。这个方法可能会如下所示:public Collection findByNumMoons(int moons) throws FinderException;它对应的EJB-QL可能是这样的一些类SQL语言:

       SELECT OBJECT(p)

       FROM Planet p

       WHERE p.numMoons = ?1

    分析下上面这个类SQL语言,?1是用于传递参数的,就像我们在Java中使用PreparedStatement时用问号来指定参数一样。SELECT OBJECT表明这个查询的返回结果是一个实体bean的引用或者是包含了多个实体bean引用的集合。而(p)则表明了所返回实体bean的类型,它是通过后面的Planet p联系起来的,这里它表明所返回的实体bean所对应的抽象schema的名字是Planet。当然find方法也可以只返回一个单独的实体bean的引用,而不是一个集合。

    补充一下,关于find方法和select方法的差别,主要有如下四点:

     find方法都是声明在实体beanhome接口中,而select方法则是申明在实体beanbean类中

     find方法对其它bean而言是可见的,而select方法则只能被同一个实体bean中的方法所访问

     find方法只能返回实体beanbean接口引用或者这些引用的一个集合,而select方法除此之外还能够返回CMP域的值和这些值的集合

     find方法都是findXxxx()的形式,而select方法则都是ejbSelectXxxx()的形式

 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值