spring +hibernate 的应用详解

来源:互联网 发布:linux qt程序打包发布 编辑:程序博客网 时间:2024/06/07 01:50

内容:

1.         征服数据库-集成hibernate

1》         管理hibernate资源 

2》         用hibernate模板访问hibernate

2.         事务管理

1》         介绍spring的事务管理器

2》         声明式事务

详解:

1.     征服数据库-集成hibernate

1》         管理hibernate资源 

    <!-- sessionFactory -->

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

        

        <!--注入数据源 -->

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

         

        <!-- hiberante映射文件 -->

              <property name="mappingResources">

                 <list>

                     <value>cn/csdn/hr/domain/Admin.hbm.xml</value>

                 </list>

              </property>

             

              <!--配置hibernate属性设置 -->

              <property name="hibernateProperties">

                <props>

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

                </props>

              </property>

   </bean>

<!-- 声明事务管理器 -->

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

           <!--sessionFactory绑定 -->

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

     </bean>

    

    

     <!--声明事务管理的模板对象 -->

     <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">

       <!--具体平台的事务管理器 -->

       <property name="transactionManager" ref="hibernateTransactionManager"/>

     </bean>

<!-- 配置Dao -->

   <bean id="adminDaoImpl" class="cn.csdn.hr.hibernate.dao.AdminDaoImpl">

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

   </bean>

  

  

   <!--配置业务Bean对象 -->

   <bean id="adminServiceImpl" class="cn.csdn.hr.hibernate.service.AdminServiceImpl">

        <!--注入dao对象 -->

        <property name="adminDao" ref="adminDaoImpl"/>

        <!--注入事务管理模板对象-->

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

   </bean>

 

2》         用hibernate模板访问hibernate

 1.第一种方法:声明hibernate模板类对象

     private HibernateTemplate hibernateTemplate;

 

     //注入hiberante模板类对象

     public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {

              this.hibernateTemplate = hibernateTemplate;

     }

第二中方法:可实现继承

public class AdminDaoImpl extends HibernateDaoSupport implements AdminDao

public List<Admin> findAll() {

             List<Admin> admins = this.getHibernateTemplate().find("from Admin");

             return admins;

    }

 

    @Override

    public void delete(Admin entity) {

             this.getHibernateTemplate().delete(entity);

            

    }

 

    @Override

    public void update(Admin entity) {

       this.getHibernateTemplate().update(entity);

            

    }

3.         事务管理

1》         介绍spring的事务管理器

   spring没有直接管理事务,而是将管理事务的责任委

 托给某个特定平台的事务实现。

JDBC事务:

<bean id="transaction"

          class="…DataSourceTransactoinManager">

     <property name="dataSource">

               <ref bean="dataSource">

       </property>

</bean>

在幕后,DataSourceTransactionManager通过调用从

DataSource得到的Connection对象来管理事务。

如:conn.rollback()|conn.commit()

<!--Hibernate 声明事务管理器 -->

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

        <!-- sessionFactory绑定 -->

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

  </bean>

 

 

2》         声明式事务

  <!-- 声明事务处理的操作 -->

  <bean id="adminServiceImplProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

      <property name="proxyInterfaces">

         <list>

            <value>cn.csdn.hr.hibernate.service.AdminService</value>

         </list>

      </property>

      <property name="target">

           <ref bean="adminServiceImpl"/>

      </property>

      <property name="transactionManager">

         <ref bean="hibernateTransactionManager"/>

      </property>

      <property name="transactionAttributes">

         <props>

           <!-- key指的是方法名通配符 事务管理的属性 -->

           <prop key="insert*">PROPAGATION_REQUIRED,ISOLATION_REPEATABLE_READ</prop>

           <prop key="add*">PROPAGATION_REQUIRED</prop>

         </props>

      </property>

 

  </bean>

 

 

原创粉丝点击