看板 Soft_Job 關於我們 聯絡資訊
※ 引述《TonyQ (沉默是金。)》之銘言: : ※ 引述《Lordaeron (Terry)》之銘言: : : 推 pandaforme:很感謝前輩的指教,所提到的層面都是考量重點 05/22 00:43 : : 推 pandaforme:那麼一般WEB開發,要採用structs框架 05/22 01:04 : : → pandaforme:從資料庫取出資料,要在頁面呈現,前輩會怎麼做呢? 05/22 01:05 : : 隨非案子指定用什麼framework, 否則我什麼鬼framework 都不用, 反正用framework : : 打的字也沒比較少. : : 要怎麼丟到頁面, 你就ResultSet 的 getString 直接印出去不就好了? : : 非得要copy 到bean 中(成本=copy 的time 和bean 的memory overhead), : : 再透過method 取出(成本=function call 的overhead), 請問是為了什麼? : : 最後structs 真的哪麼神? 哪個taglib? : 因為有人寫信給我,我也一起補一下細節吧, : 不過我也有好一陣子沒參與 struts + hibernate + spring : 這類 J2EE 專案的開發了,可能不一定有符合時下現況。(笑) : 這個論點上我是支持 Lordaeron 的說法的。 : 因為 J2EE 的世界基本上相對單純, : 你從web.xml 一定看得見 servlet + filter 的 config , : 怎麼追 code 都不會追太遠。 : Struts 2 說穿了, : 核心也不過就是個 path/servlet/jsp mapping 的 dispatcher, : 用 config / annotation / naming convention 的方式讓你好寫一點, : 也就這樣而已,沒這麼神秘或偉大吧。 : 對每一個頁面來講, : 他仍然是一個 url -> servlet(controller) -> jsp(view)。 : 它的優點在於幫你多墊一層,讓人可以不用作一些底層的事情,輕鬆點寫, : 但是即使不用他,有好的設計跟 J2EE 觀念的人, : 應該還是可以輕鬆作到他想提供的東西就是。 : 我們家最近就自己刻了一個迷你板的類 struts 架構。(覺得struts 太肥) : 另外提到 ORM ,我覺得 ORM 是迷人的,至少像 Hibernate 或 mybatis , : 他們對於 db 的建置跟 mapping 算是蠻有效率的, : 至少你不用寫自己的 db helper 去 管 connection / session , : sql 也可以相對的少寫一點點。(還是要,只是可以re-use。) : 但相對的是你常常就會忘記這世界上還有這幾個東西的存在。 : 以我過去用 Hibernate 的經驗。 : ORM 基本上在 cache (level-level2) 跟 connection pool 等環節上, : 要更小心調校,常存取的熱點,應該還是要考慮用 JDBC 的方式直接存取。 : 另外就是 ORM 的 Relation 要小心使用, : one-to-many , many-to-many , many-to-one 。 : 不應該是為了方便而使用,而是真的有需要才使用, : 在使用上要特別注意 query 產出來的東西有沒有怪物。 : 不要掛到葡萄串,像是 A --many--> B --many-- > C , : 撈了 A 就撈了一票出來。 : 寫的時候 show sql 最好打開,自己要有看得懂哪些是 slow query 的sense, : ORM 不見得是壞事,只是要寫程式的人知道自己在幹嘛, : 用ORM 要用到跟 JDBC 接近的效能,技能要求其實比用 JDBC 高很多。 Web application 可以說9成或以上都是在做以下的動作 1. user fill form ->這邊基本上javascript 為主,就算跑ajax 撈些有的沒的,就是產生另一個 1.的過程 2. read request ->就單純的讀入input 頂多多了format validation. 花不了什麼時間 3. generate SQL from request -> 組SQL 也花不了你什麼時間, 多幾個if then else 就這樣了 4. fetch Data by SQL 5. Display Result -> 這兩段loading 比是重點, send SQL(network), wait DB processing, fetch result (network),convert to java type,presentation processing, write response to browser(network) 從這樣來看, XXP 的程式幹的活, 實在是不多. 哪如果大家加了偉大的Struts + Hibernate 呢? 就由原本就這幾件簡單的動作裏, 加入了一大堆你handle 不了的東西, 何苦呢? 再說, 為了多一個ORM 的東西, 你非得要去除了SQL 以外的, 還要多學它的運作. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.45.240.94