<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
<property name="dataSource" ref="dataSource" /> 
</bean> 
<tx:advice id="txAdvice" transaction-manager="txManager"> 
<tx:attributes> 
<tx:method name="save*" propagation="REQUIRED"/> 
<tx:method name="add*" propagation="REQUIRED"/> 
<tx:method name="create*" propagation="REQUIRED"/> 
<tx:method name="insert*" propagation="REQUIRED"/> 
<tx:method name="*" read-only="true" /> 
</tx:attributes> 
</tx:advice> 

<aop:config proxy-target-class="true"> 
<aop:advisor advice-ref="txAdvice" pointcut="execution(* net.noday..service..*.*(..))" /> 
</aop:config>

getCurrentSession需要做如下配置:

<propertyname="current_session_context_class" >thread</property>

1. 前者打开一个新的,后者当前有session的话,则是使用当前的session,没有的话则创建一个新的;

2. 如果使用前者获得一个session的话,需要手动关闭session,使用后者,当事务提交,session会自动关闭,如果再关闭session则会报如下异常:Session has already closed;

3. sf.getCurrentSession方法需要在hibernate.cfg.xml做如下配置:

    <propertynamepropertyname="current_session_context_class" >thread</property>  

没有配置的话会报如下异常:org.hibernate.HibernateException:No CurrentSessionContext configured!

相关文章:

  • 2021-08-10
  • 2022-12-23
  • 2022-12-23
  • 2021-07-27
  • 2021-10-29
  • 2021-06-13
  • 2021-10-01
猜你喜欢
  • 2022-12-23
  • 2021-08-07
  • 2022-01-11
  • 2021-07-12
  • 2022-12-23
  • 2021-12-15
相关资源
相似解决方案