一些关于hibernate 与 spring 事务管理的问题

问题相关内容,在下面的链接里
http://cy.lzu.edu.cn/blog/article.php?tid=489
http://spring.jactiongroup.net/viewtopic.php?p=5791
http://www.javaeye.com/t/17339.html

简单来说,就是因为lazy的问题,采用了org.springframework.orm.hibernate3.support.OpenSessionInViewFilter,
但是这东东不太友好哦!

目前我的解决办法如下:
 spring原码不用改,
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter只管在web.xml文件里加载,不用带任何参数,
在业务层继承一个父类来管理事务:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    
<!--Base TransactionProxyed Service Bean-->
    
<bean id="baseTxService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
          abstract
="true">
        
<property name="transactionManager" ref="transactionManager"/>
        
<property name="proxyTargetClass" value="true"/>

        
<property name="transactionAttributes">
            
<props>
                
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
                
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
                
<prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>
                
<prop key="save*">PROPAGATION_REQUIRED</prop>
                
<prop key="update*">PROPAGATION_REQUIRED</prop>
                
<prop key="remove*">PROPAGATION_REQUIRED</prop>
                
<prop key="set*">PROPAGATION_REQUIRED</prop>
                
<prop key="change*">PROPAGATION_REQUIRED</prop>
                
<prop key="delete*">PROPAGATION_REQUIRED</prop>
            
</props>
        
</property>
        
<property name="preInterceptors">
            
<list>
                
<ref bean="methodSecurityInterceptor"/>
            
</list>
        
</property>
    
</bean>
</beans>

    <bean id="infopathManager" parent="baseTxService" autowire="byName">
        
<property name="target">
            
<bean class="com.gdlinkway.ebop.infopath.manager.InfopathManager"/>
        
</property>
    
</bean>

业务层的方法名的前面关键字,自己加上去。
就这样子。
posted @   电视机9号  阅读(974)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示