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

Eclipse 3.0 整合 Struts + Spring + Hibernate 實戰入門 (一):持久層、DAO、事務與測試

     編輯:Java 相關知識

三層 Web 應用經典架構:Struts (Web) → Spring (Service/事務) → Hibernate (DAO/持久)。本文為系列第一部分,涵蓋資料庫建表、Hibernate/Spring 設定、DAO 介面與實作、JUnit 測試 DAO CRUD 操作。

專案結構

src/
  com.jandar.model/       # 實體類別
  com.jandar.service.dao/ # DAO 介面
  com.jandar.service.dao.hibernate/ # DAO 實作
  test/                   # JUnit 測試
WebRoot/
  page/                   # JSP
  WEB-INF/lib/            # Struts/Spring/Hibernate JARs

資料庫建表

CREATE TABLE app_user (
    id NUMBER NOT NULL PRIMARY KEY,
    firstname VARCHAR2(32),
    lastname VARCHAR2(32)
);

Hibernate Mapping 與實體



  
    
      
    
    
    
  


// User.java (extends BaseObject 含 toString/equals/hashCode)
public class User extends BaseObject {
    private Long id;
    private String firstName;
    private String lastName;
    // getter/setter...
}

DAO 設計

// IDAO.java (標記介面)
public interface IDAO {}

// IUserDAO.java
public interface IUserDAO extends IDAO {
    List getUsers();
    User getUser(Integer userId);
    void saveUser(User user);
    void removeUser(Integer id);
}

// UserDaoHibernate.java
public class UserDaoHibernate extends HibernateDaoSupport implements IUserDAO {
    private Log log = LogFactory.getLog(getClass());

    public List getUsers() {
        return getHibernateTemplate().find("from User");
    }
    public User getUser(Integer id) {
        return (User) getHibernateTemplate().get(User.class, id);
    }
    public void saveUser(User user) {
        getHibernateTemplate().saveOrUpdate(user);
    }
    public void removeUser(Integer id) {
        Object user = getHibernateTemplate().load(User.class, id);
        getHibernateTemplate().delete(user);
    }
}

Spring 設定 (applicationContext.xml 關鍵片段)


  
  
  
  



  
  
    com/jandar/model/User.hbm.xml
  
  
    
      org.hibernate.dialect.OracleDialect
      true
    
  



  



  




  
  
    
      
    
  
  
    
      PROPAGATION_REQUIRED
      PROPAGATION_REQUIRED
      PROPAGATION_REQUIRED,readOnly
    
  

JUnit 測試 DAO

public class UserDaoTest extends TestCase {
    private ApplicationContext ctx;
    private IUserDAO userDAO;

    protected void setUp() {
        ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        userDAO = (IUserDAO) ctx.getBean("userDAO");
    }

    public void testCRUD() {
        // Create
        User u = new User(); u.setId(1); u.setFirstName("John"); u.setLastName("Doe");
        userDAO.saveUser(u);
        // Read
        assertEquals("John", userDAO.getUser(1).getFirstName());
        assertEquals(1, userDAO.getUsers().size());
        // Update
        u.setFirstName("Jane"); userDAO.saveUser(u);
        assertEquals("Jane", userDAO.getUser(1).getFirstName());
        // Delete
        userDAO.removeUser(1);
        assertEquals(0, userDAO.getUsers().size());
    }
}

Eclipse 必裝插件

  • Hibernate Sync: https://www.binamics.com/hibernatesync
  • Spring IDE: https://springframework.sourceforge.net/spring-ide/eclipse/updatesite/
  • MyEclipse (含斷點調試、JSP 編輯)
  • Sysdeo Tomcat Plugin
  • XML/JSP 編輯器

下一部分將介紹 Service 層業務邏輯、Struts Action 整合與 JSP 頁面實作。

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