org.seasar.doma
注釈型 Delegate


@Target(value=METHOD)
@Retention(value=RUNTIME)
public @interface Delegate

委譲を示します。

このアノテーションが注釈されるメソッドは、 DaoEntity もしくは MappedSuperclass が注釈されたインタフェースのメンバでなければいけません。

to 要素に指定されたクラスのインスタンスは、注釈されたメソッドが実行されるたびにインスタンス化されます。 インスタンス化後、注釈されたメソッドと同じシグニチャのメソッドが実行されます。

インタフェースに Dao が注釈されている場合

to 要素に指定されるクラスは次の制約を満たさなければいけません。

例:
 @Dao(config = AppConfig.class)
 public interface EmployeeDao {
 
     @Delegate(to = EmployeeDaoDelegate.class)
     int execute(Employee employee);
 }
 
 public class EmployeeDaoDelegate {
 
     private Config config;
     
     public EmployeeDaoDelegate(Config config) {
         this.config = config;
     }
     
     public int execute(Employee employee) {
         ...
     }
 }
 

インタフェースにEntityが注釈されている場合

to要素に指定されるクラスは次の制約を満たさなければいけません。

例:
 @Entity
 public interface Employee {
 
     @Delegate(to = EmployeeDelegate.class)
     BigDecimalDomain calculate(BigDecimalDomain salary);
 }
 
 public class EmployeeDelegate {
 
     private Employee employee;
     
     public EmployeeDelegate(Employee employee) {
         this.employee = employee;
     }
     
     public int execute(Employee employee) {
         ...
     }
 }
 

作成者:
taedium

必須要素の概要
 Class<?> to
          委譲先のクラスです。
 

要素の詳細

to

public abstract Class<?> to
委譲先のクラスです。

指定できるクラスには制約があります。



Copyright © 2009 The Seasar Foundation. All Rights Reserved.