開發步驟:
1. 先在數據庫里創建表。例如,student表。注意,表的名稱的第二個字母最好不要大寫。以免出現奇怪的問題(好像是hibernate的bug)。
2. 把目錄切換到appgen的工作目錄,修改文件tables。把里面的內容先去掉,然后添加新的表名。例如,student。
3. 在appgen的工作目錄下,運行Ant generate。
運行結果:從數據庫里讀取表結構,并生成相關的strus表單、jsp文件、hibernate的POJO對象、DAO和manager對象、struts配置文件、spring配置文件、velocity的模板文件。
4. 轉到uapp目錄下,執行ant package-web生成WAR文件
這個過程里,
a) 會根據java文件生成hibernate的映射文件;
b) compile-dao。編譯dao目錄下的java對象。
c) package-dao。把dao目錄下的classes打包成demo-dao.jar;
d) compile-service。編譯service目錄下的java對象。
e) package-service。把service目錄下的classes打包成demo-service.jar
f) copy-resources。期間,會調用native2ascii Converting 1 file from D:projectappfusemyappfusedemowebWEB-INFclasses to D:projectappfusemyappfusedemobuildwebclasses
g) generate.database.properties。
h) copy-web-files。
i) gen-forms。根據struts配置文件產生Form表單對象。
j) compile-web。會編譯action對象。 javac Compiling 40 source files to D:projectappfusemyappfusedemobuildwebclasses
k) webdoclet。產生
i. web.xml
ii. uapp.tld
iii. struts-config.xml
iv. validation.xml
v.
l) package-web.。生成war包。
注意:我們經常要處理實體間的關系,如一對多,多對多。而appgen產生的POJO對象往往都太簡單,沒有處理這些復雜的關系。所以,我們需要手工地修改POJO對象,建立對象的關聯。例如,在Parent對象里建立對Child的關聯。
在Parent.java對象里,增加
private Set children =new HashSet();
/**
* @return Returns the booths.
*
*
* @hibernate.collection-one-to-many
* class="org.aos.exhibition.model.Child"
*
* @hibernate.collection-key column="pid"
*
* @hibernate.set
* name="children"
* table="child"
* inverse="true"
* sort="unsorted
* lazy="true"
* cascade="all"
*/
public Set getChildren()
{
return this.children;
}
還有相關的addChildren(Child child)方法和getChildren()方法。
在Child對象里,增加
private Parent parent;
/**
* @return Returns the parent.
*
* @hibernate.many-to-one name="parent"
* column="pid"
* not-null="false"
* cascade="all"
*
*/
public Parent getParent() {
return parent;
}
public void setParent(Parent parent) {
this.parent = parent;
}
最后,運行ant package-web產生相關的hibernate映射文件,并編譯。
在編譯的過程中,可能會有一些錯誤,例如, ActionForm包名的錯誤導致編譯問題。
org.appfuse.model.Parent應該為org.aos.exhibition.model.Parent。需要自己修改相關的ActionForm,把包名更正。
1. 另外,我們經常會發現appgen給我們產生的jsp代碼框架太簡單,不能符合我們的要求,例如樣式、布局等等。那么我們需要修改uappwebpages目錄下的jsp文件。
2. 部署。執行ant deploy. 發布web應用到tomcat的webapps目錄下。
3. 拷貝D:Tomcat50webappsdemoWEB-INFclassesorgappfusewebappactionLookupMethods.properties到classesorgaosexhibitionwebappaction 目錄下。
4. 如果是中文版本,還需要把ApplicationResources_en.properties里面新增的內容拷貝到ApplicationResources_zh_CN.properties文件里面。
5. 使用鏈接:http://localhost:端口號/uapp/ 來啟動web應用。如果在調試過程中發生net.sf.hibernate.HibernateException: Batch update row count wrong這樣的異常,那需要重新運行Ant generate,從第三步開始作一遍