作者TonyQ (骨頭)
看板java
標題[討論] J2EE的framework
時間Fri Jun 20 05:26:12 2008
來討論一下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