国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Enterprise JavaBeans查詢語言(1)

2019-11-18 14:44:13
字體:
來源:轉載
供稿:網友

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



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长寿区| 日照市| 潮安县| 平乐县| 县级市| 鸡泽县| 仪陇县| 无棣县| 武汉市| 简阳市| 南漳县| 霞浦县| 龙陵县| 辽阳市| 岗巴县| 瑞昌市| 伊金霍洛旗| 宜阳县| 滦南县| 分宜县| 新密市| 北碚区| 合作市| 永春县| 湘乡市| 许昌市| 景洪市| 英超| 马边| 吉隆县| 广丰县| 迁安市| 盐边县| 句容市| 大埔区| 乾安县| 长宁区| 临猗县| 晋中市| 张家口市| 五河县|