• 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>     

     
  • 相关阅读:
    ETL工具主流产品
    深入了解当前ETL中用到的一些基本技术
    用C#实现通用守护进程
    80端口被system占用的问题
    Python Web 性能和压力测试 multi-mechanize
    [python]用profile协助程序性能优化
    python代码优化技巧
    转:Java学习路线图
    SecureCRT 颜色
    深度学习(Deep Learning)算法简介
  • 原文地址:https://www.cnblogs.com/hello-liyb/p/8544793.html
Copyright © 2020-2023  润新知