這里以一個普通的小項目來講具體步驟,仍以文件的思路來講。
這個系統要求用戶能注冊並登陸,還能發布信息,信息下面可留言。
因此實體類大致分為User、Information、Comment
1. domain包下的三個實體類:User.java,Information.java,Comment.java
三個實體類包含基本的屬性和相應的set/get方法。
2. 實體類與數據的映射文件:User.hbm.xml,Information.hbm.xml,Comment.hbm.xml
上述三個實體類都是要保存到數據庫中的,所以需要為他們編寫Hibernate所需的映射文件,來與數據庫中的表以及表的列形成對應。
3. dao包下,與數據庫通信用的DAO類:IUserDAO.java,IInfoDAO.java,IComment.java
這三個類均是接口,里面是一些對數據庫進行增刪改查操作的方法。
4. dao.imp包下,對DAO類的實現:UserDAO.java,InfoDAO.java,CommentDAO.java
這些類中,也不用寫JDBC,只是對傳進來的參數(比如User user)進行CRUD操作。
public class InfoDAO extends HibernateDaoSupport implements IInfoDAO{ public InfoDAO(){ } public void addInfo(Infomation infomation){ this.getHibernateTemplate().save(information); } }
這里面繼承了HibernateDaoSupport類,並會在具體方法中調用getHibernateTemplate()方法,具體的CRUD操作可通過該方法的save(),delete(),find(),get()來完成。
5. service包下,三個實體類的業務邏輯接口:IUserService.java,IInfoService.java,ICommentService.java
這些接口聲明實體類對應的業務邏輯,提供一些與信息相關的業務邏輯操作的公開的方法聲明。
和DAO的區別:DAO面向的是數據庫,實現的是數據庫應該具備的原子性的操作功能。而Service面向的是用戶,他實現的是用戶能執行的操作功能,二者功能大體近似,但很明顯地,Service的功能是以DAO里面的方法為基礎來實現的。
比如,以“用戶”為賓語的業務(方法)有:添加用戶,刪除用戶,更新用戶信息,查詢用戶信息......
6. service.imp包下,對業務邏輯接口的實現:UserService.java,InfoService.java,CommentService.java
這里是對上述業務邏輯接口的實現。涉及到與DAO接口的協作。(注意:是DAO的接口,不是DAO的實現)
7. 其它配置文件:web.xml,Struts配置文件,Spring配置文件
web.xml
applicationContent.xml