L'utilitaire pureQuery Generator génère les classes qui, à la fois, implémentent une interface déclarant des méthodes annotées et étendent l'implémentation de l'interface Data. Les applications n'ayant généralement pas besoin d'accéder à de nombreuses méthodes de l'interface Data, lors de l'exécution, les méthodes incluses dans DataFactory qui instancient des classes d'implémentation pour des interfaces de méthodes annotées particulières retournent les instances de ces interfaces.
Par exemple, si l'une de ces méthodes DataFactory instancie une implémentation de l'interface MyInterface, et que myObject est défini pour retourner la valeur de la méthode, myObject est du type MyInterface. Pour permettre à votre application d'accéder aux méthodes Data dans myObject, l'application doit transtyper myObject dans un objet Data.
Lorsque l'utilitaire pureQuery Generator génère une classe d'implémentation, cette classe étend par défaut une implémentation de l'interface Data nommée BaseData. La classe d'implémentation peut toutefois étendre une classe différente étendant elle-même BaseData.
L'unité d'exécution des objets de données n'est pas sécurisée. Ne les partagez pas entre plusieurs unités d'exécution. Utilisez un objet Data uniquement dans la même unité d'exécution que celle dans laquelle il a été créé.
Pour étendre votre classe à partir d'une classe d'implémentation générée par l'utilitaire Generator :
package customer; public interface CommonInterface { public void startHeterogeneousBatch (); // cette méthode "renomme" la méthode Data Interface public int[][] endHeterogeneousBatch (); // cette méthode "renomme" la méthode Data Interface public int dynamicSQLUpdate (String updateSQL, Object... parameters); // cette méthode "renomme" la méthode Data Interface public <T> T[] dynamicQueryArray (String sql, Class<T> returnClass, Object... parameters); // cette méthode "renomme" la méthode Data Interface public void commit (); public void rollback (); // toute autre méthode Data Interface peut également être codée ici }
package customer; public class BaseData extends com.ibm.pdq.runtime.generator.BaseData implements CommonInterface { public <T> T[] dynamicQueryArray (String sql, Class<T> returnClass, Object... parameters) { return queryArray (sql, returnClass, parameters); } public int dynamicSQLUpdate (String updateSQL, Object... parameters) { return update (updateSQL, parameters); } public void startHeterogeneousBatch () { startBatch (heterogeneousModify__); return; } public int[][] endHeterogeneousBatch () { return endBatch (); } }
Notez que cette classe étend com.ibm.pdq.runtime.generator.BaseData.
import com.ibm.pdq.annotation.Update; public interface AutoGeneratedKeysInterface { @Update(sql = "insert into MYEMPLOYEE (name, salary, deptno) values(:name, :salary, :deptno)") int createEmployee (MyEmployeeBean bean); }
import com.ibm.pdq.annotation.Update; public interface AutoGeneratedKeysInterface extends customer.CommonInterface { @Update(sql = "insert into MYEMPLOYEE (name, salary, deptno) values(:name, :salary, :deptno)") int createEmployee (MyEmployeeBean bean); }
Lorsque vous utilisez pureQuery Generator pour générer la classe d'implémentation de cette interface, vous spécifiez customer.BaseData pour l'option baseDataOverride.