Spring学习笔记(三)----Spring整合Hibernate

1.     Spring 指定datasource

a)     参考文档,找dbcp.BasicDataSource

               i.         c3p0

              ii.         dbcp

             iii.         proxool

b)     在DAO或者Service中注入dataSource

c)     在Spring中可以使用PropertyPlaceHolderConfigure来读取Properties文件的内容

2.     Spring整合Hibernate

a)     <bean .. AnnotationSessionFactoryBean>

               i.         <property dataSource

              ii.         <annotatedClasses

b)     引入hibernate 系列jar包

c)     User上加Annotation

d)     UserDAO或者UserServie 注入SessionFactory

3.     声明式的事务管理

a)     事务加在DAO层还是Service层? Service层

b)     annotation

               i.         加入annotation.xsd

              ii.         加入txManager bean

             iii.         <tx:annotation-driven

             iv.         在需要事务的方法上加:@Transactional

              v.         需要注意,使用SessionFactory.getCurrentSession不要使用OpenSession

c)     @Transactional详解

               i.         什么时候rollback

1.     运行期异常,非运行期异常不会触发rollback

2.     必须uncheck (没有catch)

3.     不管什么异常,只要你catch了,spring就会放弃管理

4.     事务传播特性:propagation_required

5.     read_only

d)     xml(推荐,可以同时配置好多方法)

               i.         <bean txmanager

              ii.         <aop:config

1.     <aop:pointcut

2.     <aop:advisor pointcut-ref advice-ref

             iii.         <tx:advice: idtransaction-manager =

    例子:

<bean id="txManager"

       class="org.springframework.orm.hibernate3.HibernateTransactionManager">

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

    </bean>

    <tx:annotation-driven transaction-manager="txManager" />

 

    <aop:config>

       <aop:pointcut expression="execution(public *com.bjsxt.service..*.*(..))"

           id="bussinessService"/>

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

    </aop:config>

 

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

       <!--the transactional semantics... -->

       <tx:attributes>

           <!--all methods starting with 'get' are read-only -->

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

           <!--other methods use the default transaction settings (see below) -->

           <tx:method name="add*" propagation="REQUIRED"/>

       </tx:attributes>

    </tx:advice>

e)     packageToScan

spring整合hibernate的时候使用packagesToScan属性,可以让spring自动扫描对应包下面的实体类

 

<property name="packageToScan">

           <list>

              <value>com.bjsxt.model </value>

           </list>

       </property>

f)      HibernateTemplate、HibernateCallback、HibernateDaoSupport(不重要)介绍

               i.         设计模式:TemplateMethod

              ii.         Callback:回调/钩子函数

使用HibernateTemplate

<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">

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

        </bean>

使用HibernateDaoSupport

第一种:(建议)

1.     在spring中初始化HibernateTemplate,注入sessionFactory

2.     DAO里注入HibernateTemplate

3.     save写getHibernateTemplate.save();

第二种:

4.     从HibernateDaoSupport继承

5.     必须写在xml文件中,无法使用Annotation,因为set方法在父类中,而且是final的


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值