Struts2SpringHibernate框架的简单整合1

之前学ssh框架整合的时候,没看视频,直接去网络上找那些整合好的东西,结果,很痛苦,要问为什么,因为那些看上去整合好的,不是要积分的不知道能不能运行的,就是根本不能运行的,只有零零散散的是能运行的,自己本来以为看了那些,在加上自己之前零零散散的看的关于struts2,hibernate,spring的知识就可以完成整合。
不过还是不行,可能和个人天资有关吧
现在终于在视频的指导下,将框架基本整合好了,下面我详说一下整合的步骤吧:
我之前是使用eclipse+maven进行操作的,现在使用sts+maven,sts是eclipse的一个插件,刚开始用,操作方法和eclipse一样,感觉除了上面安装的插件版本可以更高一点之外,并没有什么更加好用之类的,里面的sql文件竟然没有建立打开方式,format的快捷键也只有在java文件之中才比较灵敏一些。
开始的第一步是建项目:
然后在pom.xml添加相关联的jar包,对于这个,我是将学习好的成品jar包直接复制过来的

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0modelVersion>
  <groupId>study.intergrationgroupId>
  <artifactId>StrutsSpringHibernateartifactId>
  <version>0.0.1-SNAPSHOTversion>
  <description>SSH框架整合简单项目description>
    <properties>  <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
        <struts.version>2.5.12struts.version>
        <spring.version>4.3.10.RELEASEspring.version>
<hibernate.version>5.2.2.Finalhibernate.version>
        <mysql.version>5.1.34mysql.version>
    properties>
    <dependencies>
        
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>4.12version>
            <scope>testscope>
        dependency>
        
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-coreartifactId>
            <version>${spring.version}version>
        dependency>
        
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webartifactId>
            <version>${spring.version}version>
        dependency>
        
        <dependency>
            <groupId>org.apache.strutsgroupId>
            <artifactId>struts2-coreartifactId>
            <version>${struts.version}version>
            <exclusions>
                <exclusion>
                    <groupId>org.javassistgroupId>
                    <artifactId>javassitartifactId>
                exclusion>
            exclusions>
        dependency>
        
        
        <dependency>
            <groupId>org.apache.strutsgroupId>
            <artifactId>struts2-spring-pluginartifactId>
            <version>${struts.version}version>
        dependency>
        
        <dependency>
            <groupId>org.apache.strutsgroupId>
            <artifactId>struts2-convention-pluginartifactId>
            <version>${struts.version}version>
        dependency>
        
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-ormartifactId>
            <version>${spring.version}version>
        dependency>
        
        <dependency>
            <groupId>org.hibernategroupId>
            <artifactId>hibernate-coreartifactId>
            <version>${hibernate.version}version>
        dependency>
        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>${mysql.version}version>
        dependency>
        
        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>druidartifactId>
            <version>1.1.3version>
        dependency>
        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>fastjsonartifactId>
            <version>1.2.38version>
        dependency>
        
        <dependency>
            <groupId>org.aspectjgroupId>
            <artifactId>aspectjweaverartifactId>
            <version>1.8.10version>
        dependency>
    dependencies>
project>

首先进行对Spring是否成功配置进行检查
spring.xml


<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:util="http://www.springframework.org/schema/util" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xmlns:cache="http://www.springframework.org/schema/cache"
    xsi:schemaLocation="
    http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd
    http://www.springframework.org/schema/jdbc
    http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd
    http://www.springframework.org/schema/cache
    http://www.springframework.org/schema/cache/spring-cache-3.1.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd  http://www.springframework.org/schema/util
    http://www.springframework.org/schema/util/spring-util.xsd">
    
    <context:component-scan base-package="ssh1.service" />
    
    <context:property-placeholder location="classpath:jdbc.properties" />
beans>

下面是进行测试需要在service包中建立相关类

package ssh1.service;
public interface UserServiceI {
    public void test();
}
package ssh1.service.impl;

import org.springframework.stereotype.Service;

import ssh1.service.UserServiceI;

@Service("userService")

public class UserServiceImpl implements UserServiceI{

    @Override
    public void test() {
        System.out.println("进行测试");
    }
}

下面的测试类,放在test下面新建的test.ModelTest下
测试类下面我只写方法!

    @Test
    public void testSpring() {
        ApplicationContext ac=new ClassPathXmlApplicationContext(new String[] {"classpath:spring.xml"});
        UserServiceI userService=(UserServiceI)ac.getBean("userService");
        userService.test();
    }

使用junit插件运行之后,console中打印出进行测试的字样,并且在junit上面没有报错就代表spring配置好了
Struts2SpringHibernate框架的简单整合1_第1张图片

下面开始配置hibernate,首先需要建立好model下面的包,另外配置好配置文件
首先是jdbc.properties

jdbc.url=jdbc:mysql:///你使用的数据库?useSSL=true&characterEncoding=UTF-8
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.username=你的数据库账号
jdbc.password=你的数据库密码
hibernate.hbm2ddl.auto=update
hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
hibernate.show_sql=true
hibernate.format_sql=false
sessionInfoName=sessionInfo
uploadFieldName=filedate

然后是spring-hibernate.xml,spring-hibernate整合的文件


<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:util="http://www.springframework.org/schema/util" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xmlns:cache="http://www.springframework.org/schema/cache"
    xsi:schemaLocation="
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd
    http://www.springframework.org/schema/jdbc
    http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd
    http://www.springframework.org/schema/cache
    http://www.springframework.org/schema/cache/spring-cache-3.1.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/util
    http://www.springframework.org/schema/util/spring-util.xsd">
    
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
        init-method="init">
        
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
    bean>
    
    <bean id="sessionFactory"
    class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        
        <property name="dataSource" ref="dataSource" />
        
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}prop>
                <prop key="hibernate.dialect">${hibernate.dialect}prop>
                <prop key="hibernate.show_sql">${hibernate.show_sql}prop>
                <prop key="hibernate.format_sql">${hibernate.format_sql}prop>
            props>
        property>
        
        <property name="packagesToScan">
            <list>
                <value>ssh1.modelvalue>
            list>
        property>
    bean>
    
    <bean id="transactionManager"
    class="org.springframework.orm.hibernate5.HibernateTransactionManager">
        
        <property name="sessionFactory" ref="sessionFactory" />
    bean>
        <bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
         <property name="sessionFactory">
            <ref bean="sessionFactory"/>
        property>
    bean> 
    
    <tx:advice id="transactionAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            
            <tx:method name="*" />
        tx:attributes>
    tx:advice>
    
    <aop:config>
        
        <aop:pointcut id="transactionPointcut" expression="execution(* ssh1.service..*Impl.*(..))" />
        
        <aop:advisor advice-ref="transactionAdvice" pointcut-ref="transactionPointcut" />
    aop:config>
beans>

下面是在model包下面建立与table类
这里是使用注解配置


@Entity(name = "tuser")
public class Tuser {
    private String id;
    private String name;
    private String pwd;
    private Set roles=new HashSet();

    public Tuser() {
        super();
    }

    public Tuser(String id) {
        super();
        this.id = id;
    }

    public Tuser(String id, String name, String pwd) {
        super();
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }

    @Id
    @Column(name = "id", unique = true, nullable = false, length = 36)
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    @Column(name = "name", nullable = false, length = 50)
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Column(name = "pwd", nullable = false, length = 36)
    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    @ManyToMany
    public Set getRoles() {
        return roles;
    }

    public void setRoles(Set roles) {
        this.roles = roles;
    }


}

同时开始进行测试,在dao下面的包建立接口UserDaoI
接口中建立一个用来测试的方法save();

public interface UserDaoI {
    public Serializable save(Tuser t);

    public void query(String hql);

    public List findAll();

    public List login(Tuser user);
}

在Impl中实现该方法

@Repository("userDao")
public class UserDaoImpl implements UserDaoI {
    private HibernateTemplate hibernateTemplate;

    public HibernateTemplate getHibernateTemplate() {
        return hibernateTemplate;
    }

    @Resource(name = "hibernateTemplate")
    public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
        this.hibernateTemplate = hibernateTemplate;
    }

    @Override
    public Serializable save(Tuser t) {
        return this.getHibernateTemplate().save(t);
    }

然后在service下的UserServiceI中同样添加一个方法

public Serializable save(Tuser t);

在UserServiceImpl中进行实现

    @Override
    public Serializable save(Tuser t) {
        return userDao.save(t);
    }

然后开始测试

    @Test
    public void testSpring2() {
        ApplicationContext ac=new ClassPathXmlApplicationContext(new String[] {"classpath:spring.xml","classpath:spring-hibernate.xml"});
        UserServiceI userService=(UserServiceI)ac.getBean("userService");
        Tuser t=new Tuser();
        t.setId(UUID.randomUUID().toString());
        t.setName("admin");
        t.setPwd("admin");
        userService.save(t);
    }

然后查看数据库,数据库中数据就此插入
就此Spring和Hibernate的整合就简单完成了
下一步:http://blog.csdn.net/qq_36399629/article/details/78081074

你可能感兴趣的:(java)