При создании триггера задайте информацию в java-коде, загруженном на сервер приложений weblogic. - PullRequest
0 голосов
/ 13 мая 2011

У меня есть таблица базы данных оракула.Когда строка вставлена, я хочу создать триггер.До сих пор проблема в порядке, но после создания триггера я хочу вызвать код сервера приложений Weblogic (значит, я хочу установить эту информацию (новую строку базы данных) в классе Java, который загружается на другой сервер приложений WebLogic.) Любая помощь приветствуется,Я часами искал учебники в Google.Однако я не могу найти ничего, что держит руку.Можете ли вы порекомендовать учебник, или набор учебников или примеров, которые охватывают это.

Как Java класс:

import java.util.Random;

public class Person
{

    public String getId()
    {
        return id;
    }

    public void setId(String id)
    {
        this.id = id;
    }

    public String getName()
    {
        return name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

}

Где id и name являются столбцами таблицы БД.Мне нужен объект Java на сервере приложений weblogic, содержащий новые значения строки, которые вставляются в дБ.


РЕДАКТИРОВАТЬ:

Спасибо за ваш ответ ....

данные подлежат определению: - компьютер, на котором установлен Oracle 11g, а сервер приложений WebLogic установлен на другом компьютере. На сервере WebLogic имеется статическая хэш-карта hm, которая читается каким-либо другим приложением на сервере WebLogic.объект класса Person (как описано выше)

Теперь мое требование заключается в том, чтобы всякий раз, когда в таблицу базы данных добавлялась новая строка, он устанавливал значения этой строки в классе person (с помощью триггера oracle) и сохранял этот объект.в поле значения hashmap (обрабатывать один столбец таблицы db как ключ hashmap).

Например, id и name являются столбцами db. Когда в эту таблицу вставляется новая строка (id = 1, name = xyz)затем поместите эти значения в hashmap hm как {hm.put ("1", объект класса персонажа)}

поле имени будет установлено в объекте класса персонажа.

1 Ответ

0 голосов
/ 16 мая 2011

Вероятно, есть несколько способов сделать то, что вы хотите, но заставить Oracle возвращать java-объект, пожалуй, самый запутанный из них. Простейшим решением было бы иметь приложение weblogic, которое выполняет вызов для вставки записи в базу данных, затем создает объект класса Person и помещает его в хэш-карту. Если приложение не управляет идентификатором (например, идентификатор создается из последовательности в базе данных, вы можете вставить запись через функцию и заставить функцию вернуть идентификатор в веб-приложение:

CREATE SEQUENCE person_id_seq START WITH 1;

CREATE FUNCTION insert_person ( p_name IN VARCHAR2 )
    RETURN NUMBER
IS
    retval NUMBER := -1;
BEGIN
    INSERT INTO person ( id, name )
    VALUES ( person_id_seq.NEXTVAL, p_name )
    RETURNING id INTO retval;

    RETURN retval;
END insert_person;

Кроме того, я не уверен, что вы полностью понимаете, что делают триггеры Oracle. Триггеры обычно используются либо для проверки логики / данных перед вставкой / обновлением / удалением, либо для выполнения какого-либо действия после вставки / обновления / удаления (например, создание записи в таблице аудита / истории внесенных изменений, обновление других записей). Хотя Oracle поддерживает триггеры, написанные на Java, я никогда не использовал их, и я не уверен, как триггер будет взаимодействовать с вашим приложением weblogic.

Если вам необходимо вернуть java-объект из Oracle в ваше веб-логическое приложение, вы можете объявить тип объекта Oracle и вернуть функцию / процедуру вставки, либо вы можете вернуть курсор ref с элементами данных. В зависимости от того, как вы возвращаете тип объекта Oracle, вам может потребоваться определить класс Java, которому драйверы Oracle OJDBC могут сопоставить объект pl / sql.

Выполните веб-поиск по SQLData или ORAData. Отличным справочником является Р.А. Экспертное программирование Oracle JDBC Менона : http://www.amazon.com/Expert-Oracle-JDBC-Programming-Menon/dp/159059407X

...