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

Spring学习-9-Spring与Hibernate整合

时间:2016-08-11 22:14:06      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:

Spring与Hibernate整合

步骤

1)引入jar包

     连接池/数据库驱动包

     Hibernate相关jar包

     Spring 核心包和aop包

     Spring-orm

     Spring-tx

2)配置

   hibernate.cfg.xml

   bean.xml

3)搭建

package com.cx.entity;

/**
 * Created by cxspace on 16-8-11.
 */
public class Dept {

    private int id;
    private String name;

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

  

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">


<hibernate-mapping package="com.cx.entity">


    <class name="Dept" table="t_dept">
        <id name="id" column="deptId">
            <generator class="native"></generator>
        </id>

        <property name="name" column="deptName"></property>
    </class>

</hibernate-mapping>

  

package com.cx.dao;

import com.cx.entity.Dept;
import org.hibernate.SessionFactory;

/**
 * Created by cxspace on 16-8-11.
 */
public class DeptDao {

    private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    //事务交给spring管理
    public void save(Dept dept){
        sessionFactory.getCurrentSession().save(dept);
    }
}

  

package com.cx.service;

import com.cx.dao.DeptDao;
import com.cx.entity.Dept;

/**
 * Created by cxspace on 16-8-11.
 */
public class DeptService {

    private DeptDao deptDao;

    public void setDeptDao(DeptDao deptDao) {
        this.deptDao = deptDao;
    }

    public void save(Dept dept){
        deptDao.save(dept);
    }
}

  

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    	 http://www.springframework.org/schema/beans/spring-beans.xsd
     	 http://www.springframework.org/schema/context
         http://www.springframework.org/schema/context/spring-context.xsd
         http://www.springframework.org/schema/aop
         http://www.springframework.org/schema/aop/spring-aop.xsd
         http://www.springframework.org/schema/tx
     	 http://www.springframework.org/schema/tx/spring-tx.xsd">


    <!--dao实例-->
    <bean id="deptDao" class="com.cx.dao.DeptDao">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>

    <!--service实例-->
    <bean id="deptService" class="com.cx.service.DeptService">
        <property name="deptDao" ref="deptDao"></property>
    </bean>

    <!--c3p0连接池,数据源配置-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
        <property name="jdbcUrl" value="jdbc:mysql:///learnHibernate"></property>
        <property name="user" value="root"></property>
        <property name="password" value="33269456.cx"></property>
        <property name="initialPoolSize" value="3"></property>
        <property name="maxPoolSize" value="10"></property>
        <property name="maxStatements" value="100"></property>
        <property name="acquireIncrement" value="2"></property>
    </bean>

    <!--方式一:直接加载hibernate.cfg.xml文件方式整合-->

    <!--
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
    </bean>
    -->

    <!--方式二.连接池交给spring管理-->

    <!--
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    -->

    <!--最佳方式sessionFactory配置,spring与hibernate整合  hibernate.cfg.xml中的内容写道bean.xml中 -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

        <!--注入连接池对象-->
        <property name="dataSource" ref="dataSource"></property>

        <!--hibernate常用配置-->
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>

                <prop key="hibernate.show_sql">true</prop>

                <prop key="hibernate.hbm2ddl.auto">update</prop>
            </props>

        </property>

        <!--映射文件路径配置-->
       <property name="mappingLocations">
           <list>

               <value>classpath:com/cx/entity/*.hbm.xml
               </value>

           </list>

       </property>

    </bean>

    <!--整合结束-->

    <!--配置hibernate事务管理器类-->
    <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>

    <!--aop配置-->
    <aop:config>
        <aop:pointcut id="pt" expression="execution(* com.cx.service.*.*(..))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="pt"/>
    </aop:config>

</beans>

  

测试

package test;

import com.cx.entity.Dept;
import com.cx.service.DeptService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * Created by cxspace on 16-8-11.
 */
public class APP {

    private ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");

    @Test
    public void testApp() throws Exception{
        DeptService deptService = (DeptService)ac.getBean("deptService");

        System.out.println(deptService.getClass());

        deptService.save(new Dept());
    }
}

  

 

Spring学习-9-Spring与Hibernate整合

标签:

原文地址:http://www.cnblogs.com/cxspace/p/5762543.html

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