您的位置:首页 > 编程语言 > Java开发

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

2018-03-29 22:23 417 查看
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(us
4000
er);
}

}

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()方法去操作数据.

*若有不足或错误,请多多指教,谢谢!*
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: