Web層,就是MVC模式里面的“C”(controller)與“V”(View),負(fù)責(zé)控制業(yè)務(wù)邏輯層與頁面的交互與展現(xiàn),在SSH架構(gòu)中,Struts充當(dāng)controller,JSP充當(dāng)View。
Service層(就是業(yè)務(wù)邏輯層),負(fù)責(zé)實(shí)現(xiàn)業(yè)務(wù)邏輯。業(yè)務(wù)邏輯層以DAO層為基礎(chǔ),通過對DAO組件的正面模式包裝,完成系統(tǒng)所要求的業(yè)務(wù)邏輯。
DAO層,負(fù)責(zé)與持久化對象交互。該層封裝了數(shù)據(jù)的增、刪、查、改的操作。
PO,持久化對象。通過實(shí)體關(guān)系映射工具將關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)映射成對象,很方便地實(shí)現(xiàn)以面向?qū)ο蠓绞讲僮鲾?shù)據(jù)庫,該系統(tǒng)采用Hibernate作為ORM框架。 Spring的作用貫穿了整個(gè)中間層,將Web層、Service層、DAO層及PO無縫整合,其數(shù)據(jù)服務(wù)層用來存放數(shù)據(jù)。
1.1 Struts的優(yōu)劣勢

1.2 Spring的優(yōu)劣勢
Spring是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IOC)和面向切面(AOP)的容器框架。

1.3 Hibernate的優(yōu)劣勢
Hibernate是一個(gè)開放源代碼的對象關(guān)系映射框架,它對JDBC進(jìn)行了非常輕量級(jí)的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。 Hibernate可以應(yīng)用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應(yīng)用中使用,最具革命意義的是,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。
優(yōu)點(diǎn):
- 1) Hibernate 是JDBC 的輕量級(jí)的對象封裝,它是一個(gè)獨(dú)立的對象持久層框架。Hibernate 可以用在任何JDBC 可以使用的場合,例如Java 應(yīng)用程序的數(shù)據(jù)庫訪問代碼,DAO 接口的實(shí)現(xiàn)類,甚至可以是BMP 里面的訪問數(shù)據(jù)庫的代碼。
- 2) Hibernate 是一個(gè)和JDBC 密切關(guān)聯(lián)的框架,所以Hibernate 的兼容性和JDBC 驅(qū)動(dòng),和數(shù)據(jù)庫都有一定的關(guān)系,但是和使用它的Java 程序,和App Server 沒有任何關(guān)系,也不存在兼容性問題。
- 3) Hibernate 不能用來直接和Entity Bean 做對比,只有放在整個(gè)J2EE 項(xiàng)目的框架中才能比較。并且即使是放在軟件整體框架中來看,Hibernate 也是做為JDBC 的替代者出現(xiàn)的,而不是Entity Bean 的替代者出現(xiàn)的,
- 4) Hibernate 是一個(gè)開放源代碼的對象關(guān)系映射框架,它對JDBC 進(jìn)行了非常輕量級(jí)的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。
- 5) Hibernate 可以應(yīng)用在任何使用JDBC 的場合。
- 6) Hibernate 使用Java 反射機(jī)制而不是字節(jié)碼增強(qiáng)程序來實(shí)現(xiàn)透明性。
- 7) Hibernate 的性能非常好,因?yàn)樗莻€(gè)輕量級(jí)框架。映射的靈活性很出色。
- 8) 它支持各種關(guān)系數(shù)據(jù)庫,從一對一到多對多的各種復(fù)雜關(guān)系。
缺點(diǎn):
- 1) 它限制所使用的對象模型。(例如,一個(gè)持久性類不能映射到多個(gè)表)。
- 2) 較JDBC,Hibernate更消耗內(nèi)存。
- 3) 對于小型項(xiàng)目,Hibernate開發(fā)效率低。
2.jFinal Introduction
jFinal的相關(guān)介紹,請參閱http://code.google.com/p/jfinal/
3.The Comparison
不可否認(rèn),SSH與jFinal都是非常優(yōu)秀的架構(gòu),兩者都有各自的優(yōu)點(diǎn),如何進(jìn)行取舍取決于項(xiàng)目與項(xiàng)目組成員的實(shí)際情況!
注:*表示所在項(xiàng)具有相對優(yōu)勢