【Java EE】Struts2.1.6+Spring2.5.6+Hibernate3.3.1框架 整合开发

本人采用的开发环境为MyEclipse6.6,数据库为MySQL,Web服务为Tomcat。
这三个框架的整合其实就是Struts2.1.6+Spring2.5.6的整合、Spring2.5.6+Hibernate3.3.1的整合。
(一)Struts2.1.6+Spring2.5.6的整合
   详见之前发表的文章 【J2EE】Struts2.1.6与Spring2.5.6框架整合
(二)Spring2.5.6+Hibernate3.3.1的整合
1、引入Hibernate必需的jar包
hibernate3.jar
antlr-2.7.6.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
javassist-3.4.GA.jar
jta-1.1.jar
slf4j-api-1.5.2.jar
因为slf4j-api-1.5.2.jar只有接口,还需要其实现类,而Hibernate带有的jar包中并没有包含,所以还需自己到apache网站下载
slf4j-log4j12-1.5.2.jar
log4j-1.2.14.jar
两个jar包,一个是其实现,log4j-1.2.14.jar是slf4j-log4j12-1.5.2.jar所需要用到的jar包
2、在web.xml中配置过滤器,让Spring为我们自动管理session,无需我们手动开、关Hibernate中的session
     < filter >
        
< filter-name > hibernateFilter </ filter-name >
        
< filter-class >
            org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
        
</ filter-class >
    
</ filter >
    
< filter-mapping >
        
< filter-name > hibernateFilter </ filter-name >
        
< url-pattern > /* </ url-pattern >
    
</ filter-mapping >
3、在web.xml中配置过滤器,处理字符集编码
     < filter >
        
< filter-name > encodingFilter </ filter-name >
        
< filter-class >
            org.springframework.web.filter.CharacterEncodingFilter
        
</ filter-class >
        
< init-param >
            
< param-name > encoding </ param-name >
            
< param-value > GBK </ param-value >
        
</ init-param >
    
</ filter >
    
< filter-mapping >
        
< filter-name > encodingFilter </ filter-name >
        
< url-pattern > /* </ url-pattern >
    
</ filter-mapping >
4、在applicationContext-common.xml中配置一些公共的配置
     <!--  配置sessionFactory  -->
    
< bean  id ="sessionFactory"
        class
="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
        
< property  name ="configLocation" >
            
< value > classpath:hibernate.cfg.xml </ value >
        
</ property >
    
</ bean >

    
<!--  配置事务管理器  -->
    
< bean  id ="transactionManager"
        class
="org.springframework.orm.hibernate3.HibernateTransactionManager" >
        
< property  name ="sessionFactory" >
            
< ref  bean ="sessionFactory"   />
        
</ property >
    
</ bean >

    
<!--  配置事务的传播特性  -->
    
< tx:advice  id ="txAdvice"  transaction-manager ="transactionManager" >
        
< tx:attributes >
            
< tx:method  name ="add*"  propagation ="REQUIRED"   />
            
< tx:method  name ="delete*"  propagation ="REQUIRED"   />
            
< tx:method  name ="modify*"  propagation ="REQUIRED"   />
            
< tx:method  name ="*"  read-only ="true"   />
        
</ tx:attributes >
    
</ tx:advice >

    
<!--  那些类的哪些方法参与事务  -->

    
< aop:config >
        
< aop:advisor  pointcut ="execution(* com.test.manager.*.*(..))"
            advice-ref
="txAdvice"   />
    
</ aop:config >
5、在上一步中我们用到了aop,Spring本身并没有对其实现,而是使用了现成别人已经做好了的。需要引入两个jar包,在Spring中的 lib\aspectj 目录下
aspectjrt.jar
aspectjweaver.jar

6、 利用ANT+Xdoclet自动生成Hibernate配置文件,详见之前发表的文章【J2EE】ANT+Xdoclet自动生成Hibernate配置文件
7、在MySQL中建立数据库test
8、部署项目,启动Tomcat服务器便可在数据库中见到Hibernate为我们自动生成了两张表t_group、t_user
【Java EE】Struts2.1.6+Spring2.5.6+Hibernate3.3.1框架 整合开发

9、由以上步骤可知,Spring与Hibernate整合成功。
(三)验证三个框架是否成功整合
1、对之前发表的文章 【J2EE】Struts2.1.6与Spring2.5.6框架整合中的com.test.manager.impl中的类LoginManagerImpl作如下修改:
继承HibernateDaoSupport
修改isLogin方法的实现
 1 package  com.test.manager.impl;
 2
 3 import  java.util.List;
 4
 5 import  org.springframework.orm.hibernate3.support.HibernateDaoSupport;
 6
 7 import  com.test.manager.LoginManager;
 8 import  com.test.model.User;
 9
10 public   class  LoginManagerImpl  extends  HibernateDaoSupport  implements
11         LoginManager  {
12    @SuppressWarnings("unchecked")
13    public boolean isLogin(String username, String password) {
14        /*
15         * if(null!=username&&null!=password&&"intrl".equals(username.trim())&&"intrl".equals(password.trim())) {
16         * return true; } return false;
17         */

18
19        Object[] s = new Object[2];
20        s[0= username;
21        s[1= password;
22        List<User> users = this.getHibernateTemplate().find(
23                "from User user where user.username=? and password=?", s);
24        if (users.size() == 0{
25            return false;
26        }

27        return true;
28    }

29}
2、因为我们所继承的类HibernateDaoSupport需要显示地注入sessionFactory,所以必须在applicationContext-beans.xml中修改loginManager的配置,增加一个所需注入参数
     < bean  id ="loginManager"
        class
="com.test.manager.impl.LoginManagerImpl" >
        
< property  name ="sessionFactory"  ref ="sessionFactory" ></ property >
    
</ bean >
3、在MySQL中存入数据,用户名和密码均为intrl,以便测试时使用。
4、重新启动Tomcat服务,访问登录页,进行测试,可以成功读取数据库中的User信息进行验证。三个框架整合成功!!!

hobo 2009-07-10 08:49 发表评论

你可能感兴趣的:(hibernate3)