30.11.2012

PL/SQL Entity Object

Создание Enitiy Object c переопределенной логикой операций DML. Подход обычно применяется в случае наличия API для таблицы.
Для создания PL/SQL EO потребуется сделать две вещи:
  1. Унаследовать класс EO от класса OAPlsqlEntityImpl (пакет oracle.apps.fnd.framework.server.OAPlsqlEntityImpl);
  2. В модуле имплементации EO написать собственные функции
    • protected void insertRow();
    • protected void updateRow();
    • protected void deleteRow(); 
В переопределенных функциях можно разместить вызов необходимого PL/SQL API. Пример:
    protected void insertRow()
        {
            try
            {
                OADBTransactionImpl oadbtran =   
                      (OADBTransactionImpl)getDBTransaction();
                StringBuffer sBuf = new StringBuffer();
                sBuf.append("begin API_PKG.CREATE_ITEM(");
                sBuf.append("prm_id => :1,");
                sBuf.append("prm_name => :2,");
                sBuf.append("prm_desc => :3); end;");
                String queryStr = sBuf.toString();
                OracleCallableStatement oraCStmnt =
            (OracleCallableStatement)oadbtran.createCallableStatement(queryStr, -1);
                oraCStmnt.setNUMBER(1, 1);
                oraCStmnt.setString(2, "Test");
                oraCStmnt.setString(3, "Test Description");
                oraCStmnt.execute();
            }
            catch(SQLException sqlexception)
            {
                throw OAException.wrapperException(sqlexception);
            }
            catch(Exception exception)
            {
                throw OAException.wrapperException(exception);
            }            
        }
Переопределенные функции будут вызываться при фиксации транзации.

Комментариев нет :