看看我的專案設計方案,歡迎提出寶貴意見!

小陳發表於2005-06-02
[這是小弟的第一個專案設計方案,在J道論壇潛水了幾天,
拜讀了banq等大師,網友的大作,設計技術方案如下,
歡迎各位指教,小弟先行謝過了!]



設計方案




資料庫系統:DB2
資料規模:1000萬條記錄左右
使用者數: 最大估計在1000
連線池最大連線數定義為:20

開發工具:websphere application developer
中介軟體: websphere application server
開發方式:JSP+EJB(session bean)

1. 定義一個無狀態session bean --QueryBean,即通用查詢bean。

 該bean基本只設計一個方法

public myRecordSet queryDB(String sql,int fromRow,int toRow){
try{
DataSource ds=....
Connection con=ds.getConnection();
.......
RecordSet rs=...;
return MyRecordSet(rs);
}......
}

2. 其它無狀態session bean,如

UnitBean -- 處理與單位檔案有關的業務,如增,刪,改等

public boolean newUnit(UnitDoc doc){
String sql="insert into unit(unitcode,unitname....) values(?,?.....");
PreparedStatement stmt=.....
stmt.setInt(1,doc.unitcode);
stmt.setInt(2,doc.unitname);
......
}

PersonBean -- 處理與個人檔案有關的業務,如增,刪,改等


UnitBean,PersonBean等所有對資料的查詢,均呼叫QueryBean的queryDB()方法。

3. JSP頁面中,涉及對資料庫的查詢也呼叫QueryBean的queryDB()方法,並且sql語句直接在jsp

頁面構造。

如queryPerson.jsp,是一個提供使用者輸入“單位名稱”,“姓名”,“身份證號”三個
  查詢條件來查詢個人檔案的頁面
<%
String sql="select * from person";
String strUnitCode=request.getParameter("unitcode");//單位編號
String strPerName=request.getParameter("pername");//姓名
String strID=request.getParameter("id");//身份證號

if(! ("".equals(strUnitCode)) ){
sql+=" where unitcode="+strUnitCode";
}
if(! ("".equals(strPerName)) ){
if(sql.indexOf("where")==-1){
sql+=" where pername="+strPerName";
}else{
sql+=" and pername="+strPerName";
}
}
.................

QueryHome qhome=....
MyRecordSet rs=query.queryDB(sql);


...........
%>

<table ...>
<%=rs.getRow(0).getString("pername")%>

.....

相關文章