Spring入门4:Spring + Hibernate + Struts整合

14 篇文章 0 订阅
SSH整合:  三个框架间整合,让其能互相依赖完成业务流程.
SH和SS两两之间的整合.

整合的时候,要分别测试SSH的各个环境能单独运行.

1.创建数据库和表:过程略

2.web.xml配置

	<!-- struts核心过滤器 -->
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	
	<!-- SpringIOC容器初始化 -->
	<!-- 指定容器路径 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:bean.xml</param-value>
	</context-param>
	<!-- 创建容器 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

3.创建数据表对应的实体类:代码略

4.实体类与表的映射:配置略

5.dao类:接口略

    public class UserDao implements IUserDao {
		//注入sessionFactory
		private SessionFactory sessionFactory;
		public void setSessionFactory(SessionFactory sessionFactory) {
			this.sessionFactory = sessionFactory;
		}
		
		public void save(User user){
			sessionFactory.getCurrentSession().save(user);
		}
		
	}

6.service类:接口略

	public class UserService implements IUserService {
		
		// 注入dao
		private IUserDao userDao;
		public void setUserDao(IUserDao userDao) {
			this.userDao = userDao;
		}

		@Override
		public void save(User user) {
			userDao.save(user);
		}

	}

7.action类

	public class UserAction extends ActionSupport{
		
		public UserAction(){
			System.out.println("--->创建Action");
		}
		
		// 注入Service
		private IUserService userService;
		public void setUserService(IUserService userService) {
			this.userService = userService;
		}
		
		// 封装请求数据
		private User user;
		public void setUser(User user) {
			this.user = user;
		}
		public User getUser() {
			return user;
		}

		public String execute() {
			try {
				userService.save(user);
				return super.execute();
			} catch (Exception e) {
				e.printStackTrace();
				return null;
			}
		}
	}

8. struts配置

	<package name="user" extends="struts-default">
			<!-- 
				整合后:
					class  指定全名,有插件创建Action且处理依赖关系!
						   struts2-spring-plugin-2.3.4.1.jar
						   (在spring中可以减少action的配置!)
					class   指定短名称,action的创建、以及依赖关系,完全交给spring!
			 -->
			<action name="user" class="userAction">
				<result>/index.jsp</result>
			</action>
	</package>

9. Spring配置bean.xml

	<!-- 1. 连接池初始化 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
		<property name="jdbcUrl" value="jdbc:mysql:///day33"></property>
		<property name="user" value="root"></property>
		<property name="password" value="root"></property>
		<property name="initialPoolSize" value="3"></property>
		<property name="maxPoolSize" value="6"></property>
	</bean>
	
	<!-- 2. Spring与Hibernate整合, 创建SessionFactory对象 -->
	 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
      	 <property name="dataSource" ref="dataSource"></property>
      	 <property name="hibernateProperties">
      	 	<props>
      	 		<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
      	 		<prop key="hibernate.show_sql">true</prop>
      	 		<prop key="javax.persistence.validation.mode">none</prop>
      	 	</props>
      	 </property>
      	 <property name="mappingLocations">
      	 	 <list>
      	 	 	<value>classpath:cn/itcast/po/*.hbm.xml</value>
      	 	 </list>
      	 </property>
      </bean>
	
	
	<!-- 3. Spring声明式事务管理控制! -->
	<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	<tx:advice id="txAdvice" transaction-manager="txManager">
		<tx:attributes>
			<tx:method name="*" read-only="false"/>
		</tx:attributes>
	</tx:advice>
	<!-- 拦截:指定包下Service结尾的类的所有方法! -->
	<aop:config>
		<aop:advisor advice-ref="txAdvice" pointcut="execution(* cn.itcast.service.*Service.*(..))"/>
	</aop:config>
	
	<!-- Dao实例,注入SessionFactory -->
    <bean id="userDao" class="cn.itcast.dao.impl.UserDao">
    	<property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
	
	<!-- Service实例, 注入dao -->
    <bean id="userService" class="cn.itcast.service.impl.UserService">
    	<property name="userDao" ref="userDao"></property>
    </bean>
	
	<!-- Action实例, 注入service-->
    <bean id="userAction" class="cn.itcast.action.UserAction" scope="prototype">
    	<property name="userService" ref="userService"></property>
    </bean>

*完成整合

	
	*****************************
	Spring提供操作dao的类
		HibernateTemplate类
			// 直接注入HibernateTemplate工具类
				||
				vv
			<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
				<property name="sessionFactory" ref="sessionFactory"></property>
			 </bean>
		 
			private HibernateTemplate hibernateTemplate;
			public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
				this.hibernateTemplate = hibernateTemplate;
			}
			使用hibernateTemplate对象操作数据.
			
			
		HibernateDaoSupport类
			public class DeptDao extends HibernateDaoSupport implements IDeptDao{}
			// dao继承HibernateDaoSupport类,注意:配置时,一定要注入SessionFactory对象或HibenateTemplate对象
			使用getHibernateTemplate()方法去操作数据.


*若有不足或错误,请多多指教,谢谢!*

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值