在用ssh開發(fā)web應(yīng)用時,需要對生成的各個類文件進(jìn)行組織,下面就對一個可行的目錄方案進(jìn)行介紹:
譬如應(yīng)用中有一個用戶管理模塊,則在公共包下建立一個user包,如該公共包可以為com.simon.oa,
在user包下包括如下子包
1、controler包
該包放置各種struts的action。
2、dao包
該包放置各類dao(data access object),也就是放置對數(shù)據(jù)庫訪問的實(shí)現(xiàn)類,在用myeclipse中的“Hibernate Reverse Engineering”進(jìn)行反向操作時在某一個目錄中就會生成對應(yīng)某個表的DAO,生成后可將該DAO拖到dao包中。在某些應(yīng)用中將DAO作為接口,在該接口中包括所有對數(shù)據(jù)庫的操作方法,然后在dao包建立一個hibernate包,在hibernate包中放置對DAO接口的實(shí)現(xiàn),譬如:UserDAO接口有一個實(shí)現(xiàn)類為UserDaoImpl,將該類放置到hibernate包中,實(shí)際的開發(fā)傾向于后一種方式,因?yàn)閷@個DAO接口可以實(shí)現(xiàn)spring的IoC操作。(不知道m(xù)yeclipse對此是怎么考慮的,這個問題讓我糾纏了很久,誤將DAO理解成一個能夠進(jìn)行實(shí)際操作的類,而不是一個接口,以后開發(fā)要注意)
3、model包
該包中放置hibernate反向工程生成的bean和該bean對應(yīng)的.hbm.xml文件。
4、service包
該包放置業(yè)務(wù)操作類,譬如用戶服務(wù)類,一般情況將該用戶操作類提取一個接口,然后在service包下生成一個impl包,在impl包中才放置用戶操作接口的實(shí)現(xiàn)類。該用戶接口實(shí)現(xiàn)類中調(diào)用DAO接口對數(shù)據(jù)庫進(jìn)行操作,而調(diào)用該實(shí)現(xiàn)類的方法在struts的action中。
5、vo包(value object)
vo包中的中包括struts中使用的POJO及actionform等信息。
VO: Value Object
DTO: Data Transfer Object
個人理解VO和DTO是類似的東西,原則上VO和DTO只有Public Fields,主要用于進(jìn)程之間數(shù)據(jù)傳遞的問題,VO和DTO不會傳遞到表示層,在業(yè)務(wù)層就會被吸收。但看到很多人在建立VO和DTO時,也含有Setter,Getter屬性和一些其它的輔助方法,這也無可厚非,我自己也不能確定這對不對。