Hibernate与Struts2和Spring组合开发

来源:互联网 发布:算法小时代 编辑:程序博客网 时间:2024/04/29 23:55

1.1组合HibernateSpring

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,勾选CorePersistenceCore包(会自动选择AOP包),

勾选Web包。

4.删除hibernate.cfg.xml文件,修改applicationContext.xml文件的内容,增加sessionFactorydataSource的设置。修改的内容如下所示:

<?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.jarcommons-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,完成Struts2SpringHibernate的三者组合

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>

 

<!--配置事务特性,配置adddeleteupdate开始的方法,事务传播特性为

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>