У меня есть bean-компонент в моем веб-приложении Fusion, где я должен вставлять новые данные в таблицу моей базы данных с помощью кода Java (после соответствующей проверки).

Вопрос как сделать прошивку?

Стоит ли использовать Entity Objects?

Как?

PS: Это не так, как должно работать http: // jneelmani .blogspot.com / 2009/11 / adf-insert-using-storeprocedure.html

0
Zmiter 15 Май 2014 в 17:08

3 ответа

Лучший ответ

Я создал Entity Object и View Object с помощью таблицы базы данных «Сотрудники», а затем создал модуль приложения, в который был включен этот объект представления (также были сгенерированы классы Java для объекта объекта, объекта представления и appModule. EmployeeInfo - это просто POJO). Внутри модуля приложения я создал методы:

public EmployeeViewRowImpl saveEmployee(EmployeeInfo EmployeeInfo) {
    // Получаем ViewObject
    EmployeeViewImpl employeeView = getEmployeeView1();
    // Готовим новую строку.
    EmployeeViewRowImpl employee = createEmployeeViewRowImpl(employeeView, employeeInfo);
    // Производим операцию вставки.
    employeeView.insertRow(employee);
    // Коммитим
    try {
        getDBTransaction().commit();
        return employee;
    } catch (JboException e) {
        getDBTransaction().rollback();
        return null;
    }
}

private EmployeeViewRowImpl createEmployeeViewRowImpl(EmployeeViewImpl employeeView, EmployeeInfo employeeInfo) {
        EmployeeViewRowImpl employee = (EmployeeViewRowImpl)EmployeeView.createRow();
        employee.setName(employeeInfo.getName());
        return employee;
}

И чтобы использовать это, нужно просто позвонить:

public static AppModuleImpl getApp() {
    return (AppModuleImpl)Configuration.
            createRootApplicationModule(
            "com.test.service.AppModule", // where your module is stored
            "AppModuleShared"); // chosen configuration
}

А потом ...

RegistrationAppModuleImpl app = getApp();
app.saveUser(userInfo)

...
1
Zmiter 10 Июн 2014 в 08:46

Возможно, я не понимаю динамику того, что вы пытаетесь сделать, но с Oracle ADF операции CRUD (такие как Insert) легко обрабатываются, открывая их из элементов управления данными. Чтобы быть более конкретным, как только у вас есть EO, вы должны создать объект просмотра и модуль приложения. После этого внутри AppMod -> Data Model добавьте созданную ВО. Таким образом, он будет отображаться на панели «Элементы управления данными», и вы можете развернуть папку «Операции» и перетащить операцию CreateInsert, возможно, внутри формы или обновляемой таблицы. Перейдите по этой ссылке: CreateInsert Operation - ADF .

Если по какой-то другой причине вы хотите управлять этим процессом программно, я могу подумать о двух возможных способах:
1. Добавьте в свой управляемый код bean-компонента экземпляр вышеупомянутого AppMod, а оттуда - экземпляр VO.
AppModule mod = AppModule) Configuration.createRootApplicationModule ("packageName.AppModule", "AppModuleLocal"); ViewObject vo = mod.getViewObject1 ();
После этого создайте новую строку и зафиксируйте вновь добавленные значения.
2. Если вы уже представили компонент пользовательского интерфейса (такую ​​таблицу), вы можете взять Binding Context текущей страницы и создать новую строку из итератора таблицы.

        DCBindingContainer DCB = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
                DCIteratorBinding iterator = bc.findIteratorBinding("ViewObject1Iterator");
        Row r = iterator.getCurrentRow();
        r.setAttribute("attibName", attribValue);
0
Endrik 16 Май 2014 в 13:31

Вы можете выполнить вставку, используя объект сущности, как показано ниже:

/* Create a new Customer and Return the new id */
public long createCustomer(String name, String city, Integer countryId) {
    EntityDefImpl customerDef = CustomerImpl.getDefinitionObject();
    CustomerImpl newCustomer = 
       (CustomerImpl)customerDef.createInstance2(getDBTransaction(),null);
    newCustomer.setName(name);
    newCustomer.setName(name);
    newCustomer.setCountryId(countryId);

    try {
        getDBTransaction().commit();
    }
    catch (JboException ex) {
        getDBTransaction().rollback();
        throw ex;
    }

    DBSequence newIdAssigned = newCustomer.getId();
}
0
Lê văn Huy 2 Мар 2017 в 02:09