关于表现层、业务层、持久层及他们所包含的对象之间的关系的理解,高手指点

我自己在做一个小项目,表现层用的是struts,用hibernate封装JDBC代码,最后端用的数据库。在实际做的过程中,遇到了一个问题:就是数据在各层之间传递的问题,原来没有接触过类似的问题,下面是自己的一点理解,请高手指点!

举个例子:查询一个用户是否已经注册,在一个Action中控制流程,FormBean对象是表现层的数据。因为表单数据要保存到DB中,所以,我做了一个类User和DB中相应的表对应。表单提交的数据,和数据库中保存的数据不完全对应,例如:提交的是用户名、密码,而数据库中对应的表中,还有用户类型字段。

另外,表现层数据一般不应该直接传递到业务层,所以,我将从form提交的表单数据取出来,保存到一个User对象中,当然,User对象的用户类型字段是null。此时,这个User对象是一个通用的数据结构,对表现层和业务层解耦。

对数据库操作部分,采用了DAO模式,在一个DAO类中进行DB操作,并把这个User对象作为参数传递到DAO类的方法中,这时,此User对象在业务层和持久层之间的传递,这时,我认为。就不用在业务层和持久层之间再创建一个新的通用的数据结构,对业务层和持久层解耦。

查询结束后,如果用户已经注册,则返回用户数据。这时,把从数据库中得到的数据,保存到一个User对象中,穿过业务层,并在Action中,将User对象中的数据保存在session中,然后,在jsp页中显示。

如果说,我想实现的是在表现层、业务层,业务层、持久层之间建立通用数据结构,实现各层间解耦,那么,我上面的做法是否正确,或是否合理,请高手指点,多谢!