有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

spring编写java包装器

一,。这就是我的dao类的样子,每个方法的事务代码都会重复。可以把这些代码片段放在超级类中,这样我就不需要一直重复下面的代码了吗?有详细说明怎么做吗?
2.如果需要将代码片段放入super。班应该是超级英雄。课堂是静态的吗

 for (int i = 0; i < NUM_RETRIES; i++) {
     pm.currentTransaction().begin();

     <all my code will be here>

     try {
         pm.currentTransaction().commit();
         break;

     } catch (JDOCanRetryException ex) {
         if (i == (NUM_RETRIES - 1)) { 
             throw ex;
         }
     }
 }

共 (1) 个答案

  1. # 1 楼答案

    仅解决“提取到超类”问题,您可以:

    在你的基础课中:

    public abstract Object doTransaction();
    
    public abstract Object executeTransaction(some params){
    for (int i = 0; i < NUM_RETRIES; i++) {
         pm.currentTransaction().begin();
    
         this.doTransaction();
    
         try {
             pm.currentTransaction().commit();
             break;
    
         } catch (JDOCanRetryException ex) {
             if (i == (NUM_RETRIES - 1)) { 
                 throw ex;
             }
         }
     }
    }
    

    在派生类中,重新定义doTransaction方法

    public Object doTransaction() {
    
     //access database and stuff;
    }
    

    请相应调整退货类型和参数

    请注意,这里没有任何静态(静态方法不能被重写),它只是template method pattern.的一个实现