Гость
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Экземпляр класса java, как in out nocopy параметр / 8 сообщений из 8, страница 1 из 1
06.12.2021, 15:17
    #40117805
Lemkoleg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экземпляр класса java, как in out nocopy параметр
Подскажите, есть ли возможность передать экземпляр класса java, как in out nocopy параметр хранимой процедуры, которая заполнит поля даного класса. Цель: заполнить поля класса, без созданиии экземпляра обьектного типа оракл, в целях экономии памяти и времени на возврат данных полей.
...
Рейтинг: 0 / 0
06.12.2021, 15:56
    #40117819
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экземпляр класса java, как in out nocopy параметр
Lemkoleg
Подскажите, есть ли возможность передать экземпляр класса java, как in out nocopy параметр хранимой процедуры, которая заполнит поля даного класса. Цель: заполнить поля класса, без созданиии экземпляра обьектного типа оракл, в целях экономии памяти и времени на возврат данных полей.


Не очень понятно. Как Вы куда-то в PL/SQL собираетесь передавать "нечто", что даже не является объектом типа Oracle.

Хотя, в принципе и в данном случае проблем нет (можно обойти): Экземпляр любого объекта это просто последовательность битиков и байтиков, т.ч. передавайте RAW и будет Вам счастье (нет).
...
Рейтинг: 0 / 0
06.12.2021, 16:07
    #40117831
Lemkoleg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экземпляр класса java, как in out nocopy параметр
Leonid Kudryavtsev,
Нет. Чуть не так. Как раз и нужно связать обьект оракл с классом java. В java нужно сождать экземпляр этого класса, передать ссылку , на этот экземпляр,в plsql. Если это возможно
...
Рейтинг: 0 / 0
06.12.2021, 16:50
    #40117839
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экземпляр класса java, как in out nocopy параметр
авторЦель: заполнить поля класса, без созданиии экземпляра обьектного типа оракл

Эта цель вполне достижима вызовом PLSQL procedure(java method) без всяких объектных типов Oracle.

авторв целях экономии памяти и времени

Тот факт, что экономия существует и реально чему-то помогает, еще надо доказать.
...
Рейтинг: 0 / 0
06.12.2021, 16:59
    #40117842
Lemkoleg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экземпляр класса java, как in out nocopy параметр
dmdmdm
авторЦель: заполнить поля класса, без созданиии экземпляра обьектного типа оракл


Эта цель вполне достижима вызовом PLSQL procedure(java method) без всяких объектных типов Oracle.

авторв целях экономии памяти и времени

Тот факт, что экономия существует и реально чему-то помогает, еще надо доказать.

Мне нужно наоборот - вызов процедуры из java. Экономия заключается в том, что: если в классе сотня-другая полей, то возврат данных - это цикл заполнения каждого поля путем перебора из результатирующего ексемляра обьекта SQL. Плюс, во время выполния, в памяти создаются и находядтся два экземпляра: экземпляр java и экземпляр PL SQL. Соответственно и их поля.
...
Рейтинг: 0 / 0
06.12.2021, 17:46
    #40117858
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экземпляр класса java, как in out nocopy параметр
IMHO

Подозреваю, что для "мельких объектов" (сотни и даже тысячи байт), накладные расходы на сериализацию/десериализацию при передачи будет ничтожно малы, по сравнению с затратами на САМ ВЫЗОВ и соответственно передачу управления межу PL/SQL Engine и Java Engine.

В общем, в большинстве случаев, экономия памяти и времени будет чисто мифической. Тут скорее надо оптимизировать кол-во вызовов (переключений) между PL/SQL и Java

Для java object никто не мешает реализовать "ссылки" самому. Создать какой нибудь array или HashMap<Integer, Object>, сохранять туда объекты присваивая им уникальный Id/Handle. А дальше при вызове своих get'ов / set'ов уже вместо сереализации/десериалиации просто передавать свой Id/Handle

Для каких нибудь сложных структур (например развесистое дерево) на PL/SQL, смотреть как они реализованы.
...
Рейтинг: 0 / 0
06.12.2021, 17:52
    #40117859
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экземпляр класса java, как in out nocopy параметр
Lemkoleg
если в классе сотня-другая полей, то возврат данных - это цикл заполнения каждого поля путем перебора из результатирующего ексемляра обьекта SQL. Плюс, во время выполния, в памяти создаются и находядтся два экземпляра: экземпляр java и экземпляр PL SQL. Соответственно и их поля.


Если сотня-другая полей одного объекта - для современного процессора это "ни о чем". Затраты на тупую сериализацию (если конечно прикладные программисты не сделали ее особо извращенным способом) по сравнению с переключением контекста будут малозаметны.

Проблемы могут быть, если в один объект кто-то "жестко" захардкодил развесистое дерево, не подумав, дать интерфейс доступа к частям. Например XML DOM. Нормальные реализации не выполняют передачу всего дерева одним целым, а дают отдельные ссылки/handle для доступа к каждой конкретной node, attribute и так далее. Т.е. дерево большое, но вот в любой момент времени работать/передавать нужно достаточно компактные структуры.
...
Рейтинг: 0 / 0
07.12.2021, 05:21
    #40117968
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экземпляр класса java, как in out nocopy параметр
Lemkoleg
Цель: заполнить поля класса, без созданиии экземпляра обьектного типа оракл, в целях экономии памяти и времени на возврат данных полей.

Кто придумал эту цель и как он измерил траты времени и памяти в том и в другом случае?

Ответ "Вы (или Ваш начальник) помусолив палец и поплевав в потолок" означает, что целесообразнее всего оставить эту задачу и заняться чем-нибудь полезным.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Экземпляр класса java, как in out nocopy параметр / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]