作者swpoker (swpoker)
看板java
标题Re: [问题] Abstract and vendor independent JDBC??
时间Mon Jan 14 11:59:38 2013
通常我会这样一边思考一边这样写
※ 引述《mahoihei (Alvar)》之铭言:
: 大概是1+2吧
: 抱歉,我一直写中文写作都是不合格的.....
: 我说一次完整的流程好了
: 首先,我要做的大概是一个制作html form的系统
: 大概是这样子,http://www.wufoo.com/
: 先举例说ADMIN 要做一张申请上厕所的表单
看到表单,通常就是某个BEAN拉
所以先弄个类别取名叫 WCBEAN
: 他就用这个系统drag and drop一张表单的template出来
看到这里才发现原来不是wcbean
其实要是做metadata阿
所以又弄了一个METADATABean出来
: 表单入面有一些栏位,Staff Id,Toilet Id,date,time.....
这个时候其实把wcbean跟metadatabean连结起来
所以这里应该要是
meta_id,bean_id,attr_name,attr_type,attr_rule,..
: ADMIN可以做一些validation rule
: 例如,time不可以大於"某个值"
这里有行为,所以我建立一个方法,参数先不管,之後再重构
public boolean checkrole()
: "某个值"是由哪里来的?
: ADMIN由WEB 介面输入db的connection string,username,pw....
: 就会显示出这个db的所有TABLE,选一个TABLE中的某一个ATTR来当"某个值"
这里有点有趣
有点太理所当然了
跟我的业务单位的想法很类似:不就去某个系统看个值,然後去某个档案找一下,
不就有了吗?
通常我一听到心里就有点苦笑~你想的很简单~可我做的不简单阿
不过在这里我应该会这样
1.
con = 根据连线设定得到连线();
all_table_rs = con.getalltable();
2.
rs = con.queryall(tableid);
rs内有全部资料及相关的metadata
: 如果职员申请去15分,而validate rule设定只能去10分钟,系统会自动reject那张申请
table_name = "wc";
msg=msgbean();
metadata = getmetadata(table_name);
wcbean = WCBean(meatdata,msg);
wcbean.setApplyTime(Date applytime);
---
public void setApplyTime(Date applytime){
if(meta.checkrule(applytime) == false){
msg.add('applytime','too long');
return;
}
this.applytime = applytime;
}
---
处理一下msg这样
其实实作bean的验证的方式跟framework有很多,可选择自己喜欢的就好
这里只是点一下而已
: 而compile time是不会知道admin 会用什麽DB,入面有什麽TABLE.....
: 而系统应该支援多种的DB(oracle,mysql........)
这边就是可以用介面做 adapter
例如
1.输入资料库的设定:不同的资料有不同的设定
2.查询table的方法也不一样
所以我可以这样做
DatabaseAbs{
public String getName();
public List<ConfigBean> instanceConfig();
public List<TableBean> queryTable();
}
List<DatabaseAbs> dbs = 得到系统支援的资料库();
这里实做的方式就看你搂
: 再不明白,我看我还是回去补一下国小语文科....
我都是习惯一边想一边写
然後重构两三次就好啦
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.29.29.131
1F:推 PsMonkey:颁布好人徽章一枚 XD 01/14 12:23