程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> JPA 2.0的兩個類型安全標准API提議

JPA 2.0的兩個類型安全標准API提議

編輯:關於JAVA

兩年前作為Java EE 5的一部分引入的Java Persistence API為對象關系映射提供了一個POJO持久化模型。它作為JSR-220的一部分由EJB 3.0軟件專家組進行開發。

Persistence包含三個方面的內容:

API,定義在Javax.persistence包內。

Java Persistence Query Language(JPQL)。

對象/關系元數據。

盡管JPQL使得持久Java對象得到了顯著地改善,但JPQL仍然被描述為字符串。這樣在查詢操作強類型的Java對象的同時,它們自己卻是弱類型的。用這種方式構建查詢很容易出錯,而且需要支持校驗、自動補全和重構的特定IDE。

在JSR-317規范下開發的JPA 2.0被包含在Java EE 6中,其目的是通過引入能夠提供基於非字符串構建查詢的新標准API來解決這一問題。專家組領導Linda DeMichiel已經發表了一篇博文描述了目前的API草案: “簡單說,QueryDefinition對象可以被想成一組相當於查詢語義結構的節點: 領域(Domain)對象,相當於范圍(range)變量和其它JPQL FROM子句的標識符變量 Where子句謂詞,包含一個或多個條件表達式對象 Select子句,包含一個或多個‘select條目’對象 Order-by和group-by條目 子查詢(SubquerIEs)

等等……”

盡管該提議事實上是在現有JPA機制上前進了一大步,仍有許多人——這其中包括Gavin King,認為類型安全本可以也應該得到進一步改進。King的Hibernate O/R工具是使用類型安全標准API的先驅,並對EJB3產生了重大影響,他已經向專家組提交了自己的建議。他的建議利用了Java 6中引入的javax.annotation.Processor,以允許編譯器插件為每個應用程序中的持久類構建元模型(metamodel)類型。King已經在兩篇博文(第一篇、第二篇)中描述了他的方法的更多細節,以及他和他的團隊目前正在開發的與Javac一起使用的原型注解處理器。

專家組正在認真地考慮King的提議,並考慮用它替換當前的審查草稿。DeMichIEl告訴我們說: “討論主要集中在確保該API給開發者帶來更好的開發體驗上,靜態查詢(類型安全方面應當比較好)和動態查詢都應如此”。我們也在考慮該元模型(metamodel)生成方面的問題。”

她補充說專家組非常渴望從開發社區聽到任何反饋。請在sun.com上的JSr-317-pdr-feedback留下您的任何反饋評論。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved