首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

SSH 整合筆記(三):Hibernate 反向工程生成 DAO 並優化專案結構

     編輯:Java 相關知識

繼完成 Spring 與 Hibernate 整合後,本篇將利用 MyEclipse 的 Hibernate 反向工程功能,根據數據庫表自動生成實體類、映射文件及 DAO 代碼,並對專案目錄結構進行分層優化,引入屬性配置文件分離數據源信息,提升專案可維護性與擴展性。

1. 反向工程生成持久化層代碼

前提:MySQL 數據庫 ssimdb 中已建立 ssim_user 表(含主鍵、郵箱、密碼、真實姓名等字段)。

  1. 切換至 Database Explorer 視圖,展開連接選中 ssim_user 表。
  2. 右鍵選擇 Hibernate Reverse Engineering,按向導勾選生成選項(實體類、映射文件、DAO、Spring 配置片段等)。
  3. 完成後,專案將新增 net.selitech.ssim.dao 包,包含 SsimUser.java、SsimUser.hbm.xml、SsimUserDAO.java 等文件。

2. 編寫測試基類與 DAO 單元測試

SpringTestCase(測試基類)

封裝 Spring 容器啟動與 Bean 獲取邏輯,子類只需覆寫 getPathName() 指定配置文件路徑:

public class SpringTestCase extends TestCase {
    private ApplicationContext context;

    @Override protected void setUp() {
        context = new ClassPathXmlApplicationContext(getPathName());
    }
    protected String getPathName() { return "application-context.xml"; }
    protected Object getBean(String name) { return context.getBean(name); }
}

SsimUserDAOTest(DAO 測試類)

public class SsimUserDAOTest extends SpringTestCase {
    private SsimUserDAO ssimUserDAO;

    @Override public void setUp() {
        super.setUp();
        ssimUserDAO = (SsimUserDAO) getBean("SsimUserDAO");
    }

    public void testSsimUserDAO() {
        List<SsimUser> list = ssimUserDAO.findAll();
        for (SsimUser u : list) {
            System.out.println(u.getUserEmail() + "\t" + u.getUserRealname());
        }
    }
}

運行測試,控制台輸出用戶郵箱與姓名即表明 DAO 層工作正常。

3. 專案結構優化:配置文件模組化與屬性外部化

3.1 提取數據庫連接屬性文件

新建 ssimdb-config.properties 放置於 classpath 根目錄:

# database connection
ssimdb.mysql.url=jdbc:mysql://localhost:3306/ssimdb
ssimdb.mysql.username=root
ssimdb.mysql.password=your_password

# hibernate settings
hibernate.show_sql=false

3.2 重構 application-context.xml 為總匯入入口

<beans ...>
  <import resource="beans/data-source.xml" />
  <import resource="beans/ssim-dao.xml" />

  <bean id="configurator" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
      <list><value>ssimdb-config.properties</value></list>
    </property>
  </bean>
</beans>

3.3 拆分數據源與 DAO 配置

data-source.xml:配置 DBCP 連接池、SessionFactory,引用屬性佔位符 ${...}:

<bean id="ssimdb.mssql" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
  <property name="url" value="${ssimdb.mysql.url}"/>
  <property name="username" value="${ssimdb.mysql.username}"/>
  <property name="password" value="${ssimdb.mysql.password}"/>
  <property name="maxIdle" value="10"/>
  <property name="minIdle" value="2"/>
  <property name="maxActive" value="10"/>
</bean>

<bean id="ssimdb.session.factory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="dataSource" ref="ssimdb.mssql"/>
  <property name="hibernateProperties">
    <props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop></props>
  </property>
  <property name="mappingResources">
    <list><value>dao/SsimUser.hbm.xml</value></list>
  </property>
</bean>

ssim-dao.xml:聲明 DAO Bean 並注入 SessionFactory:

<bean id="SsimUserDAO" class="net.selitech.ssim.dao.SsimUserDAO">
  <property name="sessionFactory" ref="ssimdb.session.factory"/>
</bean>

4. 驗證優化成果

再次運行 SsimUserDAOTest,測試通過說明:反向生成代碼正確、配置文件模組化無誤、屬性佔位符解析成功。專案現已具備清晰的分層結構:dao、service、web、utils 等包職責分明,為後續 Struts 2 整合打下堅實基礎。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved