在Netbeans中使用Struts2.0+Spring2.5+Hibernate框架(一)

Netbeans 6.1中加入了Spring 2.5StrutsHibernate的支持,可以滿足現在大部分企業應用SSH框架的開發需求。本文將用一個簡單的登陸例子來介紹如何在Netbeans6.1中使用SSH框架進行企業級開發。本節介紹示例的準備工作、OR映射以及相關配置的方法。下一節則介紹頁面層和框架整合的關鍵技術。

軟件需求:

11JDK1.6
2
Netbeans6.1下載並安裝Struts 2.0插件Hibernate 3.5支持以及庫文件的插件
3MySQL5數據庫及JDBC驅動
4Struts+Spring整合方案庫  JDBC驅動和整合庫在這裏

實驗步驟:

1MySQL中建立數據庫sshdemo,執行以下腳本:

SETFOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
CREATE TABLE `user` (
 `userId` bigint(20) NOT NULL auto_increment,
 `userName` varchar(20) NOT NULL,
 `password` varchar(30) NOT NULL,
 PRIMARY KEY (`userId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
------------------------------
-- Records
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'mg', '123');

2Netbeans6.1中建立Web工程,在選擇框架時選擇Spring Web MVC2.5Struts2.0Hibernate,命名爲SSHDemo,如下圖所示:



點擊工程右鍵-屬性--添加Jar文件,加入ssh_lib.zip包中的兩個包。

3在源包中新建包podaoserviceaction四個包,分別用來放置ORM映射、數據庫操作、業務邏輯以及StrutsAction

4建立Model,在po包中新建類User,代碼如下:

public class User {
   private String name;
   private long id;
   private String password;
}

單擊右鍵,選擇“重構”-“封裝字段”,選擇所有字段進行封裝,生成getset方法。

5建立Model和數據庫的映射。生成在源包中右鍵單擊po包,新建-其他-Hibernate-HibernateConfiguration File,如下圖所示:


點擊下一步,命名爲hibernate1.cfg,點擊下一步,在database connection中把下拉框拉到最下面,點擊“新建數據庫連接”,如下圖所示:


注意用戶名和密碼可以自己指定。最後點擊完成,在源包的缺省包中就會生成hibernate1.cfg.xml的Hibernate配置文件:

<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/HibernateConfiguration DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
 <session-factory name="session1">
   <propertyname="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
   <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
   <propertyname="hibernate.connection.url">jdbc:mysql://localhost:3306/sshdemo</property>
   <propertyname="hibernate.connection.username">root</property>
   <propertyname="hibernate.connection.password">root</property>
 </session-factory>
</hibernate-configuration>

在po包中點擊右鍵,選擇新建-其他-Hibernate-Hibernate Mapping File,命名爲user.hbm,如下配置: 


點擊完成,生成user.hbm.xml,加入映射關係如下:

<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
   <class dynamic-insert="false" dynamic-update="false"mutable="true" name="po.User"optimistic-lock="version" polymorphism="implicit"select-before-update="false" table="user">
       <id column="userId"name="id">
           <generatorclass="identity"/>
       </id>
       <property column="userName"name="name" type="string"/>
       <property column="admin"name="admin" type="integer"/>
       <propertycolumn="password" name="password"type="string"/>
   </class>
</hibernate-mapping>

6、在Spring IoC容器中定義Hibernate的SessionFactory。打開Web頁- WEB-INF – applicationContext.xml,首先加入數據源的定義:

<bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource">
      <!--指定連接數據庫的驅動-->
       <propertyname="driverClassName" value="com.mysql.jdbc.Driver"/>
      <!--指定連接數據庫的URL-->
       <property name="url"value="jdbc:mysql://localhost:3306/sshdemo"/>
      <!--指定連接數據庫的用戶名-->
       <propertyname="username" value="root"/>
      <!--指定連接數據庫的密碼-->
       <propertyname="password" value="root"/>
   </bean>
  然後加入Hibernate的SessionFactory的定義:
    <bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
       <propertyname="dataSource" ref="dataSource"/>
       <propertyname="mappingResources">
           <list>
               <value>po/user.hbm.xml</value>
           </list>
       </property>
       <propertyname="hibernateProperties">
           <value>hibernate.dialect=org.hibernate.dialect.MySQLDialect</value>
       </property>
   </bean>

Spring的配置文件有強大的提示功能:
   

7、建立Dao接口及實現。在dao包中建立接口UserDao,代碼如下:

public interface UserDao {
   void save(User user) throws Exception;
   User getUser(long userId);
   User getUser(String userName);
}

建立實現類UserDaoImpl,代碼如下:

package dao;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import po.User;
/**
 *
 * @author Administrator
 */
public class UserDaoImpl extendsHibernateDaoSupport implements UserDao{
   public void save(User user) throws Exception
   {
       try
       {
           getHibernateTemplate().save(user);
       }
       catch(Exception err)
       {
           throw err;
       }
   }   
   public User getUser(longuserId)
   {
       return(User)getHibernateTemplate().get(User.class, userId);
   } 
   public UsergetUser(String userName) {
       return(User)getHibernateTemplate().find("from User as u where u.name = ?",userName).get(0);
   }
}

該類繼承於org.springframework.orm.hibernate3.support.HibernateDaoSupport,以方便地使用getHibernateTemplate()獲得Hibernate支持。如getUser方法,可以用getHibernateTemplate()方法獲得工廠對象sessionFactory,調用find方法可以通過HQL語句來查找對象,而不必再編寫複雜的SQL語句。對實體的其他操作入插入操作則只需調用save方法。由於Dao類必須調用sessionFactory,因此必須通過Spring IoC容器爲Dao類注入sessionFactory。在applicationContext.xml中添加以下配置:

<bean id="userDao" class="dao.UserDaoImpl">
       <propertyname="sessionFactory">
           <refbean="sessionFactory"></ref>
       </property>
   </bean> 
至此,OR映射工作完成。下一節將介紹頁面層技術,包括國際化方案。 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章