码迷,mamicode.com
首页 > 编程语言 > 详细

Spring MVC与Hibernate的整合

时间:2015-11-18 19:29:52      阅读:257      评论:0      收藏:0      [点我收藏+]

标签:

1.创建一个web项目。

2.引入类库。

3.配置中央处理器

<servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 通过初始化参数指定springmvc配置文件的位置 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-servlet.xml</param-value>
        </init-param>
</servlet>
<servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
</servlet-mapping>

4.编写springmvc-servlet.xml:

<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 前缀 /WEB-INF/jsps/home.jsp-->
        <property name="prefix" value="/WEB-INF/jsps/"></property>
        <!-- 后缀 -->
        <property name="suffix" value=".jsp"></property>
</bean>

5.编写beans.xml:

<!-- 注解驱动 -->
<mvc:annotation-driven/>
<!-- 组件扫描 -->
<context:component-scan base-package="cn.itcast.springmvc"></context:component-scan>

6.定义实体类:

public class Person implements java.io.Serializable{
    private String id;
    private String name;
    private String address;
    public final String getId() {
        return id;
    }
    public final void setId(String id) {
        System.out.println("正在调用setId方法 ,id=" + id);
        this.id = id;
    }
    public final String getName() {
        return name;
    }
    public final void setName(String name) {
        this.name = name;
    }
    public final String getAddress() {
        return address;
    }
    public final void setAddress(String address) {
        this.address = address;
    }
    @Override
    public String toString() {
        return "{id:"+id+",name:"+name+",address:"+address+"}";
    }
}

7.定义Person实体类的映射文件Person.hbm.xml

<hibernate-mapping>
    <class name="cn.itcast.springmvc.domain.Person" table="person">
        <id name="id" column="id" type="string">
            <generator class="uuid" />
        </id>
        <property name="name" column="name" type="string" />
        <property name="address" column="address" type="string"/>
    </class>
</hibernate-mapping>

8.创建person表

9.一般在项目启动的时候就要完成spring容器的初始化,web.xml:

<!-- 通过上下文参数指定spring配置文件的位置 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:beans.xml</param-value>
    </context-param>
    
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 通过初始化参数指定springmvc配置文件的位置 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-servlet.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

10.创建一个对Person进行处理的控制器类,先不考虑其他的,将流程走通。

@Controller
@RequestMapping(value="/person")//跟路径
public class PersonController {
    @RequestMapping(value="/save")
    public String savePerson(Person p){
        System.out.println("savePerson()...");
        return "success";
    }
}

http://localhost:8080/springmvc-3/person/save

11.整合hibernate,肯定要有数据源,连接数据库。

beans.xml:

<!-- 定义数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver" />
        <property name="jdbcUrl" value="jdbc:mysql://localhost/springmvc" />
        <property name="user" value="root" />
        <property name="password" value="root" />
        
        <property name="initialPoolSize" value="10"/> 
        <property name="maxPoolSize" value="50"/>
        <property name="minPoolSize" value="10"/>
</bean>
    
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        
        <!-- hibernate映射文件的位置 -->
        <property name="mappingDirectoryLocations">
            <value>classpath:cn/itcast/springmvc/domain/</value>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.Dialect">org.hibernate.dialect.MySQL5Dialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.hbm2ddl">update</prop>
            </props>
        </property>
</bean>
<!-- 事务管理器 -->
<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="save*" propagation="REQUIRED"/>
    <tx:method name="delete*" propagation="REQUIRED"/>
    <tx:method name="update*" propagation="REQUIRED"/>
    <tx:method name="find*" read-only="true"/>
    <tx:method name="*" read-only="true"/>
  </tx:attributes>
</tx:advice>
    
<aop:config>
  <aop:advisor pointcut="execution(* cn.itcast.springmvc.service.*.*(..))" advice-ref="txAdvice"/>
</aop:config>

12.定义Service,Dao

public interface IPersonDao {

    public void savePerson(Person p);
    
}
@Repository(value="personDao")
public class PersonDaoImpl implements IPersonDao {
    
    @Resource(name="sessionFactory")//name是beans.xml中的名字
    private SessionFactory sessionFactory;

    public void savePerson(Person p) {
        sessionFactory.getCurrentSession().save(p);//配置事务才可以
    }

}
public interface IPersonService {

    public void savePerson(Person p);

}
@Service(value="personService")
public class PersonServiceImpl implements IPersonService {

    @Resource(name="personDao")
    private IPersonDao personDao;
    
    public void savePerson(Person p) {
        personDao.savePerson(p);
    }

}
@Controller
@RequestMapping(value="/person")//跟路径
public class PersonController {
    
    @Resource(name="personService")
    private IPersonService personService;
        @RequestMapping(value="/save")
    public String savePerson(){
        Person p = new Person();
        p.setName("aa");
        p.setAddress("beijing");
        personService.savePerson(p);
        System.out.println("savePerson()...");
        return "success";
    }    
}

成功保存到数据库中。

------------------------------------------------------------------------

完整的CRUD操作。

 

Spring MVC与Hibernate的整合

标签:

原文地址:http://www.cnblogs.com/winner-0715/p/4975546.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!