??? Apache Cayenne 是一個強大而易于掌握的 Java? ORM 框架。它是開源且完全免費的。Cayenne 提供了 Java 對象到關系型數據庫的持久化映射管理,單方法調用查詢和更新(包括細粒度的更新所有被修改的對象),無縫隙的把多種數據庫集成到單一虛擬數據源中。Cayenne 由 CayenneModeler 分配——完整的 GUI 映射工具。Cayenne 已被成功部署在高負載的生產環境中。
???
??? 在吸取了廣大用戶的建議的基礎上發布了 1.2 版本。這個版本中最重要的新特性是“遠程對象持久化(Remote Object Persistence)”,就是把 Cayenne 轉變成一個獨立的數據服務器,以便遠程應用能訪問。目前,僅僅用于 Java 客戶端程序(常常用于 Swing 或 SWT“富客戶端”應用),但開發者計劃將客戶端用其他語言來實現。ORM-到-WS 把熟悉的 ORM 世界提供給遠程客戶端。即關系的延遲粒度、本地緩存、數據請求、單方法調用多對象的提交、等等。也就是服務器和客戶端層共享同樣的抽象對象模型和相同的 Cayenne 持久 API。
???
??? Cayenne 最早由幾名程序員在 2001 年的亞特蘭大構思。這個項目目的在于構建一個開源的 ORM 框架(當時還沒有這樣的產品),最初的設計靈感源于 NeXT/Apple 企業對象架構(Enterprise Objects Framework,EOF)。在 2002 年的秋天,Cayenne 1.0 alpha 版成功地在 NHL.com 網站(全國曲棍球聯合會)上運用。第一個官方穩定版在 2003 年 9 月發布。從那以后,Cayenne 就在全球大大小小的組織(譯注:這些機構、組織的網站)上部署。2006 年春,Cayenne 被接納為 Apache 軟件基金會孵化器項目,并立志成為 Apache 項目(譯注:也許是指和 iBATIS 一樣)。
???
??? 在了解了 Cayenne 的前世今生后,來聽聽用戶的聲音。
???
???? “我們使用 Cayenne 已經有 6 個月了,基于這個框架構建了多個 web 應用,發現它是一種生產效率很高的工具。基于 Cayenne 建模和開發是非常神奇的事情。你可以創建新表或更新已存在的表,接著點擊很少的按鈕你的數據庫就構建好了,所有類也生成了。在進行程序快速開發時,這一分鐘的持久化變動是非常有效率的。下面我把 Cayenne 1.2 和 Hibernate 3.0 做一比較:Cayenne 是更有生產力的工具集,主要是由于它的數據庫生成和代碼生成特性上,用戶無需書寫和維護 XML 映射文件。而 Hibernate 有著更加強大的查詢語言。Cayenne 的設計更加適合 web 應用程序。對于 ThreadLocal 和 HttpSession 的支持,事務模式以及連接池都可以直接拿來就用。如果是 Hibernate 的話,用戶必須自己找這些插件或者利用 Spring 對 Hibernate 的支持。Cayenne 的 DataObjects 一直都處于連接狀態,無需遭受 Hibernate 的“lazy initialization exception”之苦。Hibernate 更好的支持了 PK 和 FK 設計的關聯數據表。如果用戶遵循設計模式,在 Cayenne 中也可以直接用 PK 代理。”
??????????????????????????????????????????????????????????????????????????????????????????????????? —— Malcolm Edgar
?????
??? “我想最好的特性是無需關閉數據庫連接或會話。如果我使用 Hibernate,我必須手工關閉會話(我沒用 springframework),這樣太繁瑣了,而且容易誤操作。換成 Cayenne 的話,我無需關心數據庫連接或 JDBC 異常。”
??????????????????????????????????????????????????????????????????????????????????????????????????? —— lyo Yashnoo
???
??? “我用 Cayenne 差不多一年半了,我想說的是真的太好了!建模工具很強大并且架構也非常成熟、高效!”
??????????????????????????????????????????????????????????????????????????????????????????????????? —— Pedro Costa
請注意!引用、轉貼本文應注明原作者:Rosen Jiang 以及出處:http://www.aygfsteel.com/rosen