我們將按照兩種不同的情況講述如何使用Kodo EJB進行開發,一種是通過命令行工具,另外一種是在Eclipse中使用Ant任務。
關于EJB3和JDO2的更多內容請大家查看文章最后參考資源中的相關內容。
為什么使用Kodo EJB在Kodo EJB框架中,對象和關系數據庫之間的映射(對象-表,對象屬性-字段等)都是使用JDK5.0中的最新特性—注釋(Annotation)來提供,不再需要提供額外的配置文件。
根據EJB3規范的要求,Kodo EJB除了支持在EJB容器中使用滿足重量級企業應用的需求之外,也支持在普通java應用中采用,提供輕量級的持久層框架。只不過當我們在EJB容器中使用Kodo EJB時我們需要更多的工作以便滿足EJB容器的要求。
下載、安裝Kodo由于Kodo是基于注釋機制的框架,我們必須使用JDK5.0完成開發工作。所以下載、安裝Kodo之前,請確保您已經下載和安裝了JDK5.0。
為了演示的需要,我們選擇MySQL數據庫作為持久化的目標數據庫,請大家自己到www.mysql.com下載最新的MySQL數據庫后安裝。
下載、安裝KodoKodo的最新版本是Kodo 4.0.0 Early Access 4,目前大家可以到http://www.solarmetric.com/去下載試用版本,下載時需要注冊,你會得到30天的License。
將下載的壓縮文件解壓到c:/kodo4目錄下(后面將使用%KODO_HOME%來引用這個目錄),打開%KODO_HOME%/bin/kodocmd.cmd文件,將其中的KODODIR設置為您的Kodo的安裝目錄,將JDKHOME設置為Java的安裝目錄。
Kodo EJB實例上面的工作完成以后,我們就可以開發Kodo EJB應用了,下面的例子將主要講述如何開發一個輕量級的Kodo EJB例子,支持在Java應用中的調用,而不依靠于EJB容器,關于如何在EJB容器中配置使用Kodo EJB是一個大的課題,作者將另外撰文具體論述。
下面我們將用一個簡單的例子來說明創建Kodo EJB應用的典型步驟,實例中我們將創建名為Book的持久化對象,該對象將被持久化到本地的MySQL數據庫中。
請大家注重的是,下面的說明都基于windows 2000操作系統,假如您使用其它操作系統,可能需要做出相應的變更。
在C:盤根目下創建名為KodoExamples的目錄,我們所有的類文件和配置都放在這個目錄下。
ackage org.vivianj.kodo.examples.beans; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; import javax.persistence.Table; /** * Book 用于表征系統中的書籍對象,他有兩個屬性id - 書籍編號,書籍編號將由MySQL數據庫自動生成name - 書名 */ /* Entity注釋表示該類是持久化類,的name屬性是該實體在查詢中對應的唯一名稱,默認是類名 */ (name = "Book") /* Table注釋的name屬性指定該持久化類對應的數據表的名稱,默認數據表名和類名保持一致,為了增強代碼的可移植性,建議大家在name屬性中使用大寫英文字母 */ (name = "BOOKS") /* Inheritance注釋的strategy確定了持久化對象和數據表之間的關系,可選擇項包括SINGLE_TABLE、JOINED和TABLE_PER_CLASS,我們這里采用TABLE_PER_CLASS */ (strategy = InheritanceType.TABLE_PER_CLASS) public class Book { /* Id注釋表示該字段是標識字段 */ /* GeneratedValue注釋定義了該標識字段的產生方式,我們的演示系統中id由MySQL數據庫字段自動生成,因此選擇GenerationType.IDENTITY */ (strategy = GenerationType.IDENTITY) /* Column注釋的name屬性定義了該類屬性對應的數據字段的名稱,為了最大限度保持系統和數據庫之前的獨立性,建議使用大寫字符 */ (name = "ID") public int id; /* Basic注釋表示該屬性是基本屬性 */ /* Column注釋的name屬性定義了該類屬性對應的數據字段的名稱,為了最大限度保持系統和數據庫之前的獨立性,建議使用大寫字符 */ (name = "NAME") public String name = null;
新聞熱點
疑難解答