1.1組合Hibernate與Spring
1.在Eclipse中,新建一個Webproject。
選擇JavaEE5.0。
2.給該項目增加Hibernate開發能力,增加Hibernate相關類庫到當前項目的BuildPath,同時也提供了hibernate.cfg.xml這個配置文件。
選擇Hibernate3.1,
勾選Core包。
3.給該項目增加Spring開發能力,增加spring相關類庫到當前項目的BuildPath,同時也提供了applicationContext.xml文件。注意:最好把applicationContext.xml文件保存到當前項目的WebRoot/WEB-INF的根目錄下。
選擇Spring2,勾選Core,PersistenceCore包(會自動選擇AOP包),
勾選Web包。
4.刪除hibernate.cfg.xml文件,修改applicationContext.xml文件的內容,增加sessionFactory和dataSource的設置。修改的內容如下所示:
<?xmlversion="1.0"encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<beanid="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<propertyname="driverClassName"
value="oracle.jdbc.driver.OracleDriver">
</property>
<propertyname="url"
value="jdbc:oracle:thin:@liuweiv3000:1521:ora9">
</property><propertyname="username"value="scott"></property>
<propertyname="password"value="tiger"></property>
</bean>
<beanid="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<propertyname="dataSource">
<refbean="dataSource"/>
</property>
<propertyname="hibernateProperties">
<props>
<propkey="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
</props>
</property>
<propertyname="mappingResources">
<list>
<value>cn/com/jobedu/shop/model/Catalog.hbm.xml</value>
</list>
</property>
</bean>
</beans>
進入buildpath,添加commons-dbcp-1.2.2.jar和commons-pool-1.3.jar。
5.通過MyEclipse的反向工程嚮導方式,生成POJO類和對應的映射文件。
6.修改applicationContext.xml文件中<propertyname="mappingResources">元素的內容。如
下所示:
<propertyname="mappingResources">
<list>
<value>cn/com/jobedu/shop/model/Catalog.hbm.xml</value>
<value>cn/com/jobedu/shop/model/Product.hbm.xml</value>
</list>
</property>
7.編寫DAO接口。
packagecn.com.jobedu.shop.dao;
importjava.util.List;
importcn.com.jobedu.shop.model.Catalog;
publicinterfaceCatalogDao{
publicvoidcreate(Catalogc);
publicCataloggetCatalog(Longid);
publicListgetCatalogs();
publicvoidupdate(Catalogc);
publicvoidremove(Longid);
}
8.編寫DAO接口的實現類,實現類使用Spring提供的幫助類。示意如下:
packagecn.com.jobedu.shop.dao.hibernate;
importjava.util.List;
importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;
importcn.com.jobedu.shop.dao.CatalogDao;
importcn.com.jobedu.shop.model.Catalog;
publicclassCatalogDaoHibernateextendsHibernateDaoSupportimplementsCatalogDao{
@Override
publicvoidcreate(Catalogc){
//HibernateTemplatetemplate=getHibernateTemplate();
//template.save(c);
getHibernateTemplate().save(c);
}
@Override
publicCataloggetCatalog(Longid){
return(Catalog)getHibernateTemplate().get(Catalog.class,id);
}
@Override
publicListgetCatalogs(){
returngetHibernateTemplate().find("fromCatalogorderbyiddesc");
}
@Override
publicvoidremove(Longid){
//Catalogc=this.getCatalog(id);
//getHibernateTemplate().delete(c);
getHibernateTemplate().delete(getCatalog(id));
}
@Override
publicvoidupdate(Catalogc){
getHibernateTemplate().update(c);
}
}
9.修改applicationContext.xml文件,增加對Dao實現類的配置。
<beanid="catalogDao"
class="cn.com.jobedu.shop.dao.hibernate.CatalogDaoHibernate">
<propertyname="sessionFactory">
<refbean="sessionFactory"/>
</property>
</bean>
1.2再組合Struts2,完成Struts2、Spring和Hibernate的三者組合
0.修改web.xml文件,增加struts2的所需要的過濾器配置。
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
1.增加Struts2相應類庫,增加struts2-spring-plugin-x-x-x.jar文件。(Struts的壓縮包中,Struts所提供的。)
2.需要拷貝struts.xml文件到src跟目錄下,再修改struts.xml文件,進行常量配置。
<struts>
<constantname="struts.objectFactory"value="spring"/>
</struts>
3.修改web.xml文件,配置Spring監聽器和上下文變量。
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
修改web.xml文件,增加OpenSessionInViewFilter的設置。
<filter>
<filter-name>lazyLoadingFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class></filter>
<filter-mapping>
<filter-name>lazyLoadingFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
4.編寫Action類。
5.配置struts.xml文件。
struts.xml
<!DOCTYPEstrutsPUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constantname="struts.objectFactory"value="spring"/>
<includefile="struts-default.xml"/>
<packagename="default"extends="struts-default">
<actionname="hello"class="helloBean">
<result>hello.jsp</result>
</action>
....
</package>
</struts>
6.修改applicationConext.xml,默認情況下,Spring從下面的文件中尋找爲action所做的配置。
<?xmlversion="1.0"encoding="UTF-8"?>
<beansdefault-autowire="byName">
<beanid="helloBean"class="cn.com.jobedu.HelloWorld"scope="prototype"/>
...
</beans>
7.編寫所需要的JSP文件。
8.部署,調試整個項目。
<!--配置事務管理器--><beanid="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<propertyname="sessionFactory">
<reflocal="sessionFactory"/>
</property>
</bean>
<!--配置事務特性,配置add、delete和update開始的方法,事務傳播特性爲
required-->
<tx:adviceid="txAdvice"transaction-manager="transactionManager">
<tx:attributes>
<tx:methodname="add*"propagation="REQUIRED"/>
<tx:methodname="delete*"propagation="REQUIRED"/>
<tx:methodname="update*"propagation="REQUIRED"/>
<tx:methodname="*"read-only="true"/>
</tx:attributes>
</tx:advice>
<!--配置那些類的方法進行事務管理,當前cn.com.jobedu.crm.service包中的子包、
類中所有方法需要,還需要參考tx:advice的設置-->
<aop:config>
<aop:pointcutid="allManagerMethod"expression="execution(*
cn.com.jobedu.crm.service.*.*(..))"/>
<aop:advisoradvice-ref="txAdvice"pointcut-ref="allManagerMethod"/>
</aop:config>