Das pureQuery-Dienstprogramm Generator generiert Klassen, die eine Schnittstelle implementieren, die mit Annotationen versehene Methoden implementiert, und eine Implementierung der Schnittstelle Data erweitert. Da Anwendungen in der Regel keinen Zugriff auf die vielen Methoden der Schnittstelle Data benötigen, geben die Methoden in DataFactory, die Implementierungsklassen für bestimmte Schnittstellen instanziieren, die mit Annotationen versehene Methoden deklarieren, während der Ausführung Instanzen dieser Schnittstellen zurück.
Wenn z. B. eine dieser DataFactory-Methoden eine Implementierung der Schnittstelle MyInterface instanziiert und myObject auf den Rückgabewert der Methode gesetzt ist, ist MyInterface der Typ von myObject. Ihre Anwendung muss myObject in ein Datenobjekt umsetzen, damit sie auf die Datenmethoden in myObject zugreifen kann.
Wenn das pureQuery-Dienstprogramm Generator eine Implementierungsklasse generiert, erweitert diese Klasse standardmäßig eine Implementierung der Datenschnittstelle namens BaseData. Die Implementierungsklasse kann jedoch eine andere Klasse erweitern, die selbst BaseData erweitert.
Datenobjekte sind nicht threadsicher. Verwenden Sie sie nicht threadübergreifend. Verwenden Sie ein Objekt Data nur in dem Thread, es erstellt wurde.
Gehen Sie wie folgt vor, um Ihre Klasse von einer Implementierungsklasse zu erweitern, die das Dienstprogramm Generator generiert:
package customer; public interface CommonInterface { public void startHeterogeneousBatch (); // this method "renames" the Data Interface method public int[][] endHeterogeneousBatch (); // this method "renames" the Data Interface method public int dynamicSQLUpdate (String updateSQL, Object... parameters); // this method "renames" the Data Interface method public <T> T[] dynamicQueryArray (String sql, Class<T> returnClass, Object... parameters); // this method "renames" the Data Interface method public void commit (); public void rollback (); // any other Data Interface method can be coded here also }
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 (); } }
Beachten Sie, dass diese Klasse com.ibm.pdq.runtime.generator.BaseData erweitert.
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); }
Wenn Sie über den pureQuery-Generator die Implementierungsklasse für diese Schnittstelle generieren, geben Sie 'customer.BaseData' für die Option 'baseDataOverride' an.