zoukankan      html  css  js  c++  java
  • hibernate与spring整合

    SpringHibernate整合关键点:

    1HibernateSessionFactory对象交给Spring创建;

    2hibernate事务交给spring的声明式事务管理。

    1. DeptDao.java

    // 数据访问层

    public class DeptDao {

    // SpringHibernate整合: IOC容器注入

    private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sessionFactory) {

    this.sessionFactory = sessionFactory;

    }

    // 保存一个记录

    // SpringHibernate整合:事务管理交给Spring

    public void save(Dept dept) {

    sessionFactory.getCurrentSession().save(dept);

    }

    }

    2. DeptService

    public class DeptService {

    private DeptDao deptDao;

    public void setDeptDao(DeptDao deptDao) {

    this.deptDao = deptDao;

    }

    public void save(Dept dept){

    deptDao.save(dept);

    }

    }

    3. App.java  测试

    public class App {

    // 容器

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

    @Test

    public void testApp() throws Exception {

    DeptService deptServie = (DeptService) ac.getBean("deptService");

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

    deptServie.save(new Dept());

    }

    }

    4. bean.xml 配置  【Spring管理SessionFactory3中方式】

    <?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="cn.itcast.dao.DeptDao">

    <property name="sessionFactory" ref="sessionFactory"></property>

    </bean>

    <!-- service 实例 -->

    <bean id="deptService" class="cn.itcast.service.DeptService">

    <property name="deptDao" ref="deptDao"></property>

    </bean>

    <!-- 数据源配置 -->

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">

    <property name="driverClass" value="com.mysql.jdbc.Driver"></property>

    <property name="jdbcUrl" value="jdbc:mysql:///hib_demo"></property>

    <property name="user" value="root"></property>

    <property name="password" value="root"></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>

    <!-- ###########SpringHibernate整合  start########### -->

    <!-- 方式(1)直接加载hibernate.cfg.xml文件的方式整合

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

    <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>

    </bean>    -->

    <!-- 方式(2)连接池交给spring管理  【一部分配置写到hibernate中,一份分在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> -->

    <!-- 【推荐】方式(3)所有的配置全部都在Spring配置文件中完成 -->

    <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.MySQLDialect</prop>

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

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

    </props>

    </property>

    <!-- hibernate映射配置

    <property name="mappingLocations">

    <list>

    <value>classpath:cn/itcast/entity/*.hbm.xml</value>

    </list>

    </property>

    -->

    <property name="mappingDirectoryLocations">

    <list>

    <value>classpath:cn/itcast/entity/</value>

    </list>

    </property>

    </bean>

    <!-- ###########SpringHibernate整合  end########### -->

    <!-- 事务配置 -->

    <!-- a. 配置事务管理器类 -->

    <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

    <property name="sessionFactory" ref="sessionFactory"></property>

    </bean>

    <!-- b. 配置事务增强(拦截到方法后如果管理事务?) -->

    <tx:advice id="txAdvice" transaction-manager="txManager">

    <tx:attributes>

    <tx:method name="*" read-only="false"/>

    </tx:attributes>

    </tx:advice>

    <!-- c. Aop配置 -->

    <aop:config>

     <aop:pointcut expression="execution(* cn.itcast.service.*.*(..))" id="pt"/>

     <aop:advisor advice-ref="txAdvice" pointcut-ref="pt"/>

    </aop:config>

    </beans>     

     
  • 相关阅读:
    HDU 1202 The calculation of GPA
    HDU 1201 18岁生日
    HDU 1200 To and Pro
    C语言实现的图的深度搜索与广度搜索程序
    深度优先搜索和广度优先搜索的深入讨论
    Linux sftp 安全文件传输命令
    看白鹿原有感
    中国人民抗日战争暨世界反法西斯战争胜利70周年(20150903)
    高一的我曾对自己说"要放慢脚步去生活"!?
    网络营销(续)
  • 原文地址:https://www.cnblogs.com/hello-liyb/p/8544793.html
Copyright © 2011-2022 走看看