|
|
|
Флейм для пользы - Как хранить Состояние в 3-х звенке или Есть ли SpringСостояние?
|
|||
|---|---|---|---|
|
#18+
Собственно сабж. - в 2-х звенке (или БЛ в СУБД) это делается элементарно. - есть ли аналог SpringMVC - SpringСостояние? Мне второй важнее ______________________________________________ "Сделай настолько просто, насколько это возможно, но не проще". © А. Эйнштейн. AutoPOI.ru — ГИС-технологии для Oracle ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 15:50:39 |
|
||
|
Флейм для пользы - Как хранить Состояние в 3-х звенке или Есть ли SpringСостояние?
|
|||
|---|---|---|---|
|
#18+
Чего состояние хранить? Объекта? Так его на pure Java можно клонировать либо сериализовать. Что под "Состоянием" понимать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 15:55:27 |
|
||
|
Флейм для пользы - Как хранить Состояние в 3-х звенке или Есть ли SpringСостояние?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, ТЗ я перекупил у автора /topic/905874&hl= и могу его корректировать. - в 2-х словах - сложные составные объекты с ленивой загрузкой. Аналог отвязанного DataSet\\ClientDataSet\\Xiber_ClientCashe ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 15:58:36 |
|
||
|
Флейм для пользы - Как хранить Состояние в 3-х звенке или Есть ли SpringСостояние?
|
|||
|---|---|---|---|
|
#18+
т.е. нивелируем недостатки Session-Per-Request т.к. это устарело и не соответствует Session-Per-View (десктоп) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 16:00:24 |
|
||
|
Флейм для пользы - Как хранить Состояние в 3-х звенке или Есть ли SpringСостояние?
|
|||
|---|---|---|---|
|
#18+
svenom...... В общем, понял я вашу проблему. Есть два решения . Одно умное, правильное, но геморное. Второе топорное, кривое, но быстрее. Изначально проблема заключается в том, что вы пытаетесь переложить на сессию Хибера то, для чего она не предназначена. А именно - поддержание состояния работы пользователя между запросами. Так вот, этим должна заниматься не сессия Хибера, а сессия сервелета, а логика поддержания этого состояния должна поддерживаться вами вручную. 1) Правильное решение - писать код самому, который будет отслеживать изменения пользователя. Это будут скорее всего тупо POJO с минимумом логики и в основном геттерами - сеттерами. В итоге - для всех операций пользователя вы будете только считывать данные из БД, то есть открыли сессию Хибера, быстро считали, закрыли. И лишь последним действием - сохранением - вы переносите все изменения из сессии сервлета в сессию Хибера и комитите их. 2) Дерьмовое решение - полезть в непубличный API Хибера. То есть берете сессию, кастите ее до SessionImpl и начинаете копаться в потрохах Хибера. Примеры: а) вызвать sessionImpl.gtPersistenceContext() и порыться там; б) вызвать sessionImpl.getActionQueue(), потом через рефлекшн получить значения закрытых полей insertions/deleteions/updates и что-нибудь замутить с ними; в) вызвать sessionImpl.getListeners() и выставить своих листенеров на события. Но учтите, что пойдя вторым путем, вы испортите свою карму, совершив акт говнокодерства. Еще несколько таких проступков - и бессмертный дух говнокодерства поработит вас ......... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 16:13:19 |
|
||
|
Флейм для пользы - Как хранить Состояние в 3-х звенке или Есть ли SpringСостояние?
|
|||
|---|---|---|---|
|
#18+
svenom, самому писать, да без генераторов, только в крайнем случае.... с отвращением. Вариант2 ещё хуже. Пока ищу решение, а то нет оснований убирать БЛ из БД для корпоратива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 16:15:37 |
|
||
|
Флейм для пользы - Как хранить Состояние в 3-х звенке или Есть ли SpringСостояние?
|
|||
|---|---|---|---|
|
#18+
правильно я понял, что Хибер-ОРМ не поможет, спринг и АппСервер тоже? Если включить ручной flush и хранить там копии объектов тоже нельзя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 16:18:38 |
|
||
|
Флейм для пользы - Как хранить Состояние в 3-х звенке или Есть ли SpringСостояние?
|
|||
|---|---|---|---|
|
#18+
Нет такого решения. Нужно просто нормально сегментировать данные. Вот пользователь работает с некоторой выборкой. Мы ему загрузили её всю на desktop, дали с ней игратся сколько ему влезет. И сохранили целиком. В чем смысл сохранять её по частям? Проблема автора в указанном топике в том что нужно сохранить объект, не сохраняя его. Вопрос зачем? Он уже есть в памяти. Зачем помещать его в Hibernate Session, не желая сохранения в базу??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 16:19:01 |
|
||
|
Флейм для пользы - Как хранить Состояние в 3-х звенке или Есть ли SpringСостояние?
|
|||
|---|---|---|---|
|
#18+
Petro123правильно я понял, что Хибер-ОРМ не поможетПравильно, он для этого и не предназначен. Petro123спринг и АппСервер тоже?Неправильно, Спринг и АппСервер к проблеме отношения не имеют в принципе. Petro123Если включить ручной flush и хранить там копии объектов тоже нельзя?Нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 16:24:46 |
|
||
|
Флейм для пользы - Как хранить Состояние в 3-х звенке или Есть ли SpringСостояние?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНужно просто нормально сегментировать данные. ======== если модель, то она есть Вот пользователь работает с некоторой выборкой. ===== у него бизнес-сущность как в десктопе на 5 вкладках "Персона+ПриказНаДолжность+Оклад" Мы ему загрузили её всю на desktop, ======= всю нельзя - ленивых куча. Вопрос зачем? Он уже есть в памяти. Зачем помещать его в Hibernate Session, не желая сохранения в базу??? ==== нужно простое - подгрузка в несколько сессий как на десктопе. И кнопка - ОК\Отмена ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 16:24:50 |
|
||
|
Флейм для пользы - Как хранить Состояние в 3-х звенке или Есть ли SpringСостояние?
|
|||
|---|---|---|---|
|
#18+
svenom, Спринг к MVC тоже не имеет отношения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 16:25:45 |
|
||
|
Флейм для пользы - Как хранить Состояние в 3-х звенке или Есть ли SpringСостояние?
|
|||
|---|---|---|---|
|
#18+
svenomПравильно, он для этого и не предназначен. Нахрен мне такая 3-х звенка, если ни к чему не имеет отношения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 16:26:51 |
|
||
|
Флейм для пользы - Как хранить Состояние в 3-х звенке или Есть ли SpringСостояние?
|
|||
|---|---|---|---|
|
#18+
Petro123svenomПравильно, он для этого и не предназначен. Нахрен мне такая 3-х звенка, если ни к чему не имеет отношения?Вы просто не умеет ее готовить (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 16:32:18 |
|
||
|
Флейм для пользы - Как хранить Состояние в 3-х звенке или Есть ли SpringСостояние?
|
|||
|---|---|---|---|
|
#18+
svenomВы просто не умеет ее готовить (с) ну как же, я пробовал твой рецепт: svenomПравильное решение - писать код самому не вкусно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 16:34:26 |
|
||
|
Флейм для пользы - Как хранить Состояние в 3-х звенке или Есть ли SpringСостояние?
|
|||
|---|---|---|---|
|
#18+
Petro123======= всю нельзя - ленивых куча. Все ленивые догружаются с сервера, когда они нужны. Не нужны - не догружаются - не апдейтятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 16:37:10 |
|
||
|
Флейм для пользы - Как хранить Состояние в 3-х звенке или Есть ли SpringСостояние?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczPetro123======= всю нельзя - ленивых куча. Все ленивые догружаются с сервера, когда они нужны. Не нужны - не догружаются - не апдейтятся. тогда не пойму - есть проблемы и надо руками? Или нет проблем особых Сессия Hiber на Сессию HTTP Откат будет работать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 16:39:44 |
|
||
|
Флейм для пользы - Как хранить Состояние в 3-х звенке или Есть ли SpringСостояние?
|
|||
|---|---|---|---|
|
#18+
пока такие варианты: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 16:40:30 |
|
||
|
Флейм для пользы - Как хранить Состояние в 3-х звенке или Есть ли SpringСостояние?
|
|||
|---|---|---|---|
|
#18+
Petro123, в рамках MVC ваше состояние - это Pure M. Новость?:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 16:43:55 |
|
||
|
Флейм для пользы - Как хранить Состояние в 3-х звенке или Есть ли SpringСостояние?
|
|||
|---|---|---|---|
|
#18+
Petro123BlazkowiczВсе ленивые догружаются с сервера, когда они нужны. Не нужны - не догружаются - не апдейтятся.тогда не пойму - есть проблемы и надо руками? Или нет проблем особых Сессия Hiber на Сессию HTTP Откат будет работать?Каша в голове. Повторюсь - Хибер не решает эти проблемы, он для этого не предназначен, ни кеш первого уровня, ни кеш второго уровня. Состояние между HTTP запросами поддерживает сессия сервлета. Но в ней, разумеется, нет никаких готовых структур данных, это тупо Map. Точка, закрывайте тему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 16:49:40 |
|
||
|
Флейм для пользы - Как хранить Состояние в 3-х звенке или Есть ли SpringСостояние?
|
|||
|---|---|---|---|
|
#18+
Petro123тогда не пойму - есть проблемы и надо руками? Или нет проблем особых Я уже задал вопрос выше. Не понятна постановка задачи. Для чего мне сохранять какое-то состояние, но не сохранять в базу? У меня на десктопе уже есть эти сущности. У них уже есть своё состояние. Для чего мне хранить это состояние вне сущностей? Petro123Сессия Hiber на Сессию HTTP Hibernate Session долгоиграющим может быть только теоретически. На практике он на это не способен. Но если гипотетически можно и так. Пишем в долгую сессию. Флашим. Пересоздаём сессию переодически. Petro123Откат будет работать? AFAIK, Транзакция и Hibernate Session могут работать в разных комбинациях: 1-1, 1-n, n-1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 16:52:20 |
|
||
|
Флейм для пользы - Как хранить Состояние в 3-х звенке или Есть ли SpringСостояние?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczЯ уже задал вопрос выше. Не понятна постановка задачи. Для чего мне сохранять какое-то состояние, но не сохранять в базу? У меня на десктопе уже есть эти сущности. У них уже есть своё состояние. Для чего мне хранить это состояние вне сущностей? тогда давайте по простому: Заказчик - Заказы. В ослике 1 ко многим. ВИ1 CRUD C - 3 заказа U - 2 заказа D - 1 заказ U - у одного заказа ленивое количество и адрес (U для адреса) Будет работать и ОК Отмена из нескольких реквестов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 16:58:55 |
|
||
|
Флейм для пользы - Как хранить Состояние в 3-х звенке или Есть ли SpringСостояние?
|
|||
|---|---|---|---|
|
#18+
в десктопе я держал сессию-коннект на всю жизнь приложения. Здесь надо хотя бы между реквестами - на сессию. Что равносильно на жизнь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 17:00:26 |
|
||
|
Флейм для пользы - Как хранить Состояние в 3-х звенке или Есть ли SpringСостояние?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczПишем в долгую сессию. Флашим. Пересоздаём сессию переодически. вот это вроде выше вариант 2 или 3? Тут надо копать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 17:02:00 |
|
||
|
Флейм для пользы - Как хранить Состояние в 3-х звенке или Есть ли SpringСостояние?
|
|||
|---|---|---|---|
|
#18+
svenomНо в ней, разумеется, нет никаких готовых структур данных, готовая структура (копия БД) в кэше втором. Но ты сказал её не выйдет. Ещё пихать всё что отдал в респонс в сессию HTTP. Тут не знаю, тоже надо копать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 17:11:00 |
|
||
|
Флейм для пользы - Как хранить Состояние в 3-х звенке или Есть ли SpringСостояние?
|
|||
|---|---|---|---|
|
#18+
я более подробно описал задачу по которой пошел разговор в данном топике, а также откомментировал вариант решения который предлагался. смотреть 3 моих последних сообщения /topic/909083&pg=3 на всякий случай кидаю сюда ссылку, так как вещи связанные, если нужно по другому сделать вставку, скажите как?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 17:13:26 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37613411&tid=2132744]: |
0ms |
get settings: |
16ms |
get forum list: |
20ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
63ms |
get topic data: |
16ms |
get forum data: |
4ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
| others: | 342ms |
| total: | 544ms |

| 0 / 0 |
