问题场景:     我这里有5个对象,第一次开发的时候是通过页面将各个对象入库的,每个对象入库前获得hibernate的session 开启事务
如果入库过程中无异常则提交事务 并将事务标志复位!(这里借助ThreadLocal 这个类来实现的).这个本身没问题,但是现在需求要求我们 通过脚本将多个对象一起入库.那我加个更大的事务 就出问题了...因为我们调用的还是以前入库的那套接口.意思是 我们现在 没个小对象有个事务, 然后总的来需要个事务 但是一加这个事务就异常了.我的理解是 在每个对象加完后 将事务的标志复位. 然后在最后事务提交的时候 我们得到的事务是一个没开启的. 那何来的 commit 呢?
     请各位大侠指导! 我们在不改变原来架构的问题 又能满足这样的需求 该怎么办?

解决方案 »

  1.   

    用了SPRING了么?配置下事务传播性就行了。
    没用的话,就自己写个AOP调用开启事务和提交
      

  2.   


      这个还请明细说下.谢谢!主要是不要改变原来架构!
      目前已经快要叫版本了 所以 抛弃接口是不可行的.  我们自己有一个基类用来做事务的 开启和提交 但是这个不是问题所在啊   所在的是我们 基类实例只有一个!这个问题很麻烦啊 又要调用原来接口 又想达到需求.这个需要大侠们的指点啊...如果我再new 个基类实例  来控制我的这个大的事务 结果会不会想得到的呢..会对以前的接口有影响么? 请大侠们指点!
      

  3.   


    不推荐使用由其是hibernate 很麻烦的。如果事务很大的话考虑使用缓存吧。。
      

  4.   


    hibernate + ehcache  如果还没有处理。你可以到  www.jdon.com 去问 板桥大师
      

  5.   

    LZ有用到Spring 吗??如果用到了就用spring的AOP来控制事务,这样很容易解决的