精華區beta java 關於我們 聯絡資訊
來討論一下framework吧, 說真的我都快被 framework 給搞昏了,底子太差。-.-a 以前我覺得有必要再碰framework,加上手邊資訊不多, 所以遲遲沒有碰,現在工作有機會用上了,來寫點東西分享/討論一下。 ──────────────────────────────── 由於我是直接看前輩code寫code,所以很多基礎觀念可能有點偏差, 除了webwork跟hibernate的部份有q老大帶過應該還沒忘光以外, 還請大家不吝指教。 =.=a 來講一下我的認知, webwork -> 設定actionName、actionClass跟jsp檔案的關聯 簡單的類比就是先接到一個servlet處理完後, 再用處理完的變數跑jsp,得到呈現後的結果, 做兩層的用意在於可以把一些複雜的運算在jsp前就已經先處理好, jsp就可以專心做view端的顯示。 我能想到的優缺點: 如果是同一個頁面同一份資料需要拆成多個子頁面, 比方說像是ajax 載入可能就會拆成一個頁面中多個子資料區, 就可以採用多個actionName指向同一個actionClass中的不同method, 達到後端套版不用再做一次,也不需要再多寫一個檔案。 (傳統jsp的作法應該是直接在創一個jsp起來寫,這裡可以省這個功。) 另外就是像pagenotfound之類的狀態過濾也可以在這裡做。 他主要需要維護的設定檔->xwork.xml Hibernate 嚴格來說他不只是J2EE的framework,用途是把資料庫的處理物件化的 O-R Mapping(Object-Relation-Mapping)工具。 為達成這個目標他把物件至少分成兩層,一個叫Model層, 通常在model層你會有一個成員完全對照資料庫中某個表格的物件。 (當然,你必須要再撰寫一個.hbm檔來告訴hibernate他的成員關係, 這部份有一些自動化工具可以幫忙,如先前所介紹過的xdoclet。) 有model後再來就是要讓model活起來,需要的就是處理model的物件, 也就是DAO (Data Access Object),他可以幫你簡化CRUD的內容。 再上去通常還會再有一層manager, 可以再對DAO做到比CRUD更高層級的包裝。 在這裡應該還要有交易(transcation)概念, 不過這部份我並沒有學的很好,所以先不談。Orz 他需要維護的設定檔-> *.hbms 以及一個告訴hibernate要讀哪些hbm設定檔的設定檔 (我不確定這個檔案叫什麼,我只知道我們公司的作法。XD) Spring 用來管理你Action、Dao中所需要用到的任何通用成員的初始化, 比方說我今天MessageBoardAction(留言板行為) 可能需要 MessageDao(留言)、UserDao(使用者)兩者的協助, 我就可以在Spring中先把MessageDao、UserDao所需要的資源先寫好, 再寫action-beans把MessageDao、UserDao給引進MessageBoardAction。 這樣我就可以不用在MessageBoardAction想方設法, 去把MessageDao 跟UserDao給new出來。 當然Spring本身有提供一些操作用的Template。 要維護的設定檔-> action-beans.xml ...等等等等 (他是設定檔最多的=.=) ──────────────────────────────── 基本上設定檔的部份是目前最干擾我的,常常寫完之後忘記哪裡要改那個 config,跑完之後出錯誤才想到。...orz framework能幹麻,他怎麼去幫我們簡化*這些工作, 是我在還沒有接觸framework之前最關心的事情, 既然現在略窺一二,就拿出來一起討論一下。 *註簡化不全是指減少,有時也指維護或擴充時較為簡易) --- 不過我是覺得framework並不是新手入門的好幫手,或者不用學習的工具, (也就是你不會聽到學JSP/servlet幹嘛,直接學Framework就好的言論。) 他是一種把已經做到令人厭煩的事情用某種方式給包裝起來, 達到更快速更「乾淨」的思維空間,他並不代表easy,而是simplicity。 -- I am a person, and I am always thinking . Thinking in love , Thinking in life , Thinking in why , Thinking in worth. I can't believe any of what , I am just thinking then thinking , but worst of all , most of mine is thinking not actioning... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.134.27.68 ※ 編輯: TonyQ 來自: 220.134.27.68 (06/20 05:28) > -------------------------------------------------------------------------- < 作者: adrianshum (Alien) 看板: java 標題: Re: [討論] J2EE的framework 時間: Fri Jun 20 10:49:23 2008 沒有用過 WebWork, 姑且談一談 Spring & Hibernate 有些人覺得人 Hibernate 就不必再拘泥用 DAO, 這種想法有他的道理在, 可以去了解一下. 雖然 我近來做的 system 還是有寫 DAO :) Hibernate 與 Spring 的 config 是有點多. 如果用 JDK5 或以上的話, 不妨考慮用 annotation 來減少比較靜態的 config. 比如明知只會面對 一個特定 schema 工作的話, 乾脆用 annotation 定 義. 這樣就少一個巨大的 hbm. Spring 也可以利用 2.5 的 annotation config, 利用 @Resource 去做 injection, 用 @Repository/ @Component/@Controller/@Service 去定義 bean creation (當然只限在 system 只出現一個的 bean). 扣除了這些靜態的 config, config file 的大小就 減少很多了, 也因為不少 config 直接綁在相關的 class 所以要修改的時候也不會那麼容易忘記 alien -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 202.155.236.82 ※ 編輯: adrianshum 來自: 202.155.236.82 (06/20 10:49)
TonyQ:了解 annotation 的部份我可能要再了解一下, 06/20 13:08
TonyQ:謝謝前輩的指導. o(_ _)o 06/20 13:12