hibernate和spring怎么整合的

hibernate和spring添加切面配置是如何搞得,请各位大神指点我,谢谢啦

6个回答

不用大神指点,直接问度娘呗,详解教程俯拾起皆是。

    在公司一直没有什么机会直接折腾SSH“原生态”的SSH当今比较流行的轻量级的框架,用着公司的框架也是郁闷异常,今天没事整整原来用过的一个项目的配置,发现就算是自己曾经用过的东西,如果较长时间不返过去重新学习,许多你半熟不熟的知识就是异常陌生。下面贴上我的一些配置,暂且权当备份吧。
 
web.xml
 
作为Java web项目......
答案就在这里:Spring+Hibernate整合配置
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

Spring整合Hibernate是一个比较大的问题,根据我的理解,概括来说有以下步骤:
1.Spring声明DataSource数据源的SpringBean实例;
2.Spring声明Hibernate的SessionFactory,Spring中有对Hibernate的SessionFactory类的封装类,通常只需要声明Spring中的Hibernate封装类即可,然后利用Spring容器的依赖注入,把数据源(dataSource)注入给同样是Spring Bean实例的SessionFactory对象,同时列出所有的持久化(PO)类。
3.把SessionFactory对象再注入给Dao方法,在Dao方法中利用SessionFactory实例对数据进行CRUD;
4.Dao类一般仅用于单一的CRUD,真正的业务逻辑实现通常被定义在Service类中,Dao类的实例通过Spring依赖注入被注入给Service类实例;
5.在真正的企业应用中,利用Spring对Hibernate进行事务管理也是十分重要的,而事务管理通常是利用Spring的面向切面编程(AOP)对Service类进行增强从而达到事务控制的目的。
以下是一个配置文件示例,我假定楼主已经有了Spring和Hibernate的基础:

<?xml version="1.0" encoding="GBK"?>

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">

<!--定义数据源bean,使用C3P0数据源实现,并注入数据源的必要信息-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
      destroy-method="close"
      p:driverClass="oracle.jdbc.OracleDriver"
      p:jdbcUrl="jdbc:oracle:thin:@localhost:1521:orcl"
      p:user="scott"
      p:password="tiger"
      p:maxPoolSize="5"
      p:minPoolSize="2"
      p:initialPoolSize="2"
      p:maxIdleTime="30"/>

<!--定义Hibernate的SessionFactory,SessionFactory需要依赖注入源,注入dataSource-->
<bean id="sessionFactory"
      class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"
      p:dataSource-ref="dataSource">
    <!-- 指定持久化(PO)类-->
    <property name="annotatedClasses">
        <list>
            <value>org.hrsystem.domain.Aoo</value>
        </list>
    </property>
    <!-- 指定Hibernate的属性配置-->
    <property name="hibernateProperties">
        <value>
            hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
            hibernate.hbm2ddl.auto=update
            hibernate.show_sql=true
            hibernate.format_sql=false
            hibernate.cache.use_second_level_cache=true
            hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory
        </value>
    </property>
</bean>


<!--把sessionFactory注入给employeeDao Bean实例-->
<bean id="employeeDao" class="org.hrsystem.dao.impl.EmployeeDaoImpl"
      p:sessionFactory-ref="sessionFactory"/>

<!--把employeeDao注入给empManager Bean实例-->
<bean id="empManager" class="org.hrsystem.service.impl.EmpManagerImpl" p:employeeDao-ref="employeeDao"/>


<!--
以下是利用Spring的AOP对Hibernate进行事务控制
 -->
<!-- 配置Hibernate的声明事务管理器,并依赖注入SessionFactory -->
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- 配置事务增强Bean,依赖注入事务管理器 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <!-- 配置详细的事务定义,这些配置放在tx:attributes元素中 -->
    <tx:attributes>
        <!-- 定义对可以作为AOP切入点的所有方法都进行事务增强
         name属性指定AOP切入点中需要进行事务增强的方法,
         用*(通配符)指代所有方法,或get*指代所有以get开头的方法;
         isolation属性指定隔离级别,用默认的隔离级别;
         propagation属性指定事务的传播性,REQUIRED指如果调用该方法的线程处于事务中,
         则直接调用;如果当前执行线程不处于事务环境中,则启动新的事务后执行该方法;
         timeout事务超时的时间,以秒为单位;
         -->
        <tx:method name="*" isolation="DEFAULT"
                   propagation="REQUIRED" timeout="5"/>
    </tx:attributes>
</tx:advice>
<aop:config>
    <!-- 定义切入点,此时仅仅指定empManager实例作为需要增强的实例,
    也可以使用Spring EL表达式来指定具有相同特征的一批类作为切入点 -->
    <aop:pointcut id="myPoint"
                  expression="bean(empManager)"/>
    <!-- 使用aop:advisor元素指定在myPoint切入点使用txAdvice进行事务增强处理 -->
    <aop:advisor advice-ref="txAdvice" pointcut-ref="myPoint"/>
</aop:config>


yuxxz
xszhaobo 使用的Spring版本是4.0.4,Hibernate版本是4.3.5。
接近 5 年之前 回复

哈哈哈哈就斤斤计较坎坎坷坷

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐