※ 引述《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