我的java bean设计得对吗?

qabp 2004-05-03 01:06:42
简单例子,与问题无关的都已省略:

/**部门表:department **/
create table Department(
DepNo char(9), /**主键,部门代号**/
DepUpperNo char(9) /**上级部门代号,无上级部门时为空**/
);

/* entry bean */
class Department{
private String depno;
Department depupper; //若无上级部门,为空
//....
//setters and getters
}

/* bean to operate the database */
class DepartmentMap{
public DepartmentMap(){}
public Department load(String DepNo){
//...Connect the database and construct the string sql
ResultSet rs=db.executeQuery(sql);
Department dep,depupper;
dep.setDepNo(rs.getString("DepNo"));
if (rs.getString("DepUpper")!=null){
DeparmtentMap dm;
depupper=dm.load(rs.getDate("DepUpper"));
}
else depupper=null;
dep.setDepDepUpper(depupper);
return dep;
}
//other functions...
}
调用load函数时,会递归执行下去,把所有的上级部门都实例化了,好象没有这个必要,很耗时啊。我这样设计对不对呢?不对,又该怎么改?
顺便问一句,DepartmentMap是不是设计成abstract class好一点?
...全文
29 8 点赞 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
qabp 2004-05-04
干脆重载一个load函数,只设置depno,不再设置上级部门。这样,就只到上一级部门就可以停止了
  • 打赏
  • 举报
回复
pengfeitian 2004-05-04
gz
  • 打赏
  • 举报
回复
qabp 2004-05-03
没有人回答?
  • 打赏
  • 举报
回复
qabp 2004-05-03
zuoyangguang(走向光明),因为department 类中depupper也为department类,要“填上”某个department的属性,就必须把depupper也“具体化”,这样就递归了,会把所有上级部门都实例化的。我也不想这样,大概是我设计有问题吧。改成什么呢?把depupper改成string型,觉得不大好啊。

Ranmei(转向java) ,“数据库操作/访问的部分写成一个抽象类”是指对所有的表的操作只写一个类?还是每个表都有一个map类?
  • 打赏
  • 举报
回复
Ranmei 2004-05-03
数据库操作/访问的部分写成一个抽象类。
DepartmentMap实现数据库的类.
  • 打赏
  • 举报
回复
zuoyangguang 2004-05-03
为什么要实例化所有的上级部门
  • 打赏
  • 举报
回复
qabp 2004-05-03
happyxyzw(happyxyzw),谢谢!!!其他有问题吗?你还有其他建议吗?
  • 打赏
  • 举报
回复
顽皮小熊 2004-05-03
对,你这种情况最好设计成抽象类比较好。我建议!
  • 打赏
  • 举报
回复
相关推荐
发帖
Web 开发
加入

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2004-05-03 01:06
社区公告
暂无公告