日期:2014-05-20  浏览次数:20716 次

我这个项目dao层怎么设计
使用的是struts+Hibernate做购物网站,已经用myeclipse生成了po和SessionFactory,准备写DAO先接口后impl再用DAOFactory
不过DAO具体不知到怎么写,比如该定义哪些函数和是该返回po类还是用list还是自己定义vo
另外hibernate中的那些表关联(one-one,many-one)在这个项目中要不要使用,比如<订单>和<订单中的商品表>似乎就有一对多的关系
哪位有项目经验的高手来指点下,非常感谢
帮我用user表举个例子
CREATE TABLE `user` (
  `user_id` int(11) NOT NULL auto_increment,
  `name` varchar(50) default NULL COMMENT '用户名',
  `password` varchar(50) default NULL COMMENT '密码',
  `pwdQuestion` varchar(100) default NULL COMMENT '密码提问',
  `pwdReply` varchar(100) default NULL COMMENT '密码回答',
  `realName` varchar(50) default NULL COMMENT '真实姓名',
  `sex` varchar(5) default NULL COMMENT '性别',
  `mobile` varchar(20) default NULL COMMENT '手机号码',
  `phone` varchar(20) default NULL COMMENT '电话号码',
  `email` varchar(50) default NULL COMMENT '电子邮件',
  `postCode` varchar(20) default NULL COMMENT '邮政编码',
  `address` varchar(100) default NULL COMMENT '详细地址',
  `vip` int(11) default NULL COMMENT '是否为vip',
  `age` int(11) default NULL COMMENT '年龄',
  `job` varchar(50) default NULL COMMENT '职业',
  `degree` varchar(50) default NULL COMMENT '最高学历',
  `province` varchar(50) default NULL COMMENT '所在省份',
  `city` varchar(50) default NULL COMMENT '所在城市',
  `createTime` timestamp NOT NULL default CURRENT_TIMESTAMP COMMENT '创建时间',
  `lastVisitTime` datetime default NULL COMMENT '最近登陆时间',
  `lastVisitIP` varchar(20) default NULL COMMENT '最近登陆IP',
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=REDUNDANT COMMENT='用户信息';


------解决方案--------------------
dao层就是你要实现的功能。。有一个通用接口(Dao),每一个表写一个接口(UserDao extends Dao)继承通用接口,接口中就是你对这个表的操作的方法,然后在impl中去写一个通用实现类(BaseDao implements Dao)实现通用接口 然后在写每一个表对应的接口的实现类(UserDaoImpl extends BaseDao implements UserDao)
如果用到one-many就不需要用到定义 VO了。。查询出来一个对象通过延迟加载就可以得到它的关联对象了。就可以直接到页面去取。。
------解决方案--------------------
dao封装通用的save();delete();updata();queryALL();queryByName();queryByID()......,qurey返回的
数据类型用list的情况较多.
第二个问题不明白你的需求