傳統 J2EE 開發面臨「對象-關係阻抗失配」與 EJB 重量級框架開發效率低的雙重挑戰。本文提出「Struts 處理表現層 MVC + Hibernate 處理持久層 ORM」的輕量級組合架構,並以用戶登入模塊為例演示落地實踐。

<hibernate-configuration><session-factory>
<property name="connection.datasource">java:comp/env/jdbc/sysdb</property>
<property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>
<mapping resource="User.hbm.xml"/>
</session-factory></hibernate-configuration>
建議生產環境通過 JNDI 使用 Tomcat/JBoss 連接池,替換 Hibernate 內置簡易池。
<class name="User" table="tUser">
<id name="UserID" column="User_ID" type="java.lang.Integer">
<generator class="native"/>
</id>
<property name="UserName" column="User_Name" type="java.lang.String"/>
...
</class>
<form-beans>
<form-bean name="LoginForm" type="com.LoginForm"/>
</form-beans>
<action-mappings>
<action attribute="LoginForm" input="Login.jsp" path="/DoLogin" .../>
</action-mappings>
login.jsp 輸入帳密,提交至 /DoLogin.do;LoginAction 接收 LoginForm,調用 UserDAO.findByName(username) 獲取持久化對象;session.save()、session.load() 等操作。| 維度 | 傳統 EJB/JDBC | Struts + Hibernate |
|---|---|---|
| 開發效率 | 低(大量樣板代碼、部署調試慢) | 高(向導生成、熱部署、少代碼) |
| 耦合度 | 高(強依賴容器、SQL 散落) | 低(POJO、配置分離、接口編程) |
| 可維護性 | 差(修改 SQL 需改 Java) | 好(映射文件集中、HQL 面向對象) |
| 學習曲線 | 陡峭 | 平緩 |
此架構已被廣泛驗證,成為輕量級 Java EE 開發的經典範式,後續演進為 Spring + Hibernate/MyBatis,核心思想一脈相承。