这里以一个普通的小项目来讲具体步骤,仍以文件的思路来讲。
这个系统要求用户能注册并登陆,还能发布信息,信息下面可留言。
因此实体类大致分为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